문제 링크 programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr 풀이 칫솔을 팔아서 한 번에 얻을 수 있는 이익이 최대 10,000원이고, 10%씩 부모에게 상납해야 하므로 최대 5세대 위의 부모까지만 상납하면 됩니다. 1) 각 사람의 부모를 저장해줍니다. 2) 사람과 이익금이 주어졌을 때 부모에게 10%씩 상납하는 함수를 만듭니다. 3) 각 칫솔 판매마다 재귀적으로 돌려줍시다. ES2015 이후로 객체 프로퍼티의 키가 s..

블로그를 관리하다 보면 좀 불편한 구석이 몇 개 있다. 물론 굉장히 잘 만들어진 스킨이라 제작자분에게 정말 감사하지만.. 카테고리별 글 수가 안 나오는 게 자꾸 눈에 걸렸다. 우측 상단의 카테고리 바를 누르면 이렇게 리스트로 나타난다. 1차 카테고리로 들어가면 그 카테고리에 직접 쓴 글과 하위 카테고리에 쓴 글을 모두 볼 수 있다. 근데 뭐랄까 좀 명확하지 않다. 블로그에 온 사람이 저런 카테고리를 보면 하위 카테고리로만 들어갈 것 같은 느낌? 상위 카테고리는 그저 분류만 해놓은 느낌?? 이게 항상 아쉬웠다. 실제로 방문 통계의 기타 유입을 확인해보면 하위 카테고리가 있는 카테고리 중 1차 카테고리로 접근한 페이지가 별로 없다. 이런 이유 때문에 카테고리별 글 수를 표시하기로 했다. 예전에 블로그 스킨을..
문제 링크programmers.co.kr/learn/courses/30/lessons/68645코딩테스트 연습 - 삼각 달팽이5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11]programmers.co.kr 풀이문제의 요구대로 시뮬레이션해줍시다.아래 방향, 오른쪽 방향, 윗 방향의 순서대로 값을 채웁니다.이때 $n, n-1, n-2, ..., 1$개씩 채워주면 됩니다. 각 동작을 함수로 구현하고 적절한 시작점과 길이를 넘겨줍시다. 정답 코드let ans, num = 1; const down = (x, y, l) => { if(l == 0) return; for(let k = 0; k..
문제 링크programmers.co.kr/learn/courses/30/lessons/68936?language=javascript#코딩테스트 연습 - 쿼드압축 후 개수 세기[[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15]programmers.co.kr 풀이재귀 함수를 이용하면 됩니다. 1) 배열의 모든 수의 합을 구합니다. 이때 n차원 배열을 풀어주는 flat() 함수를 이용하면 편합니다. fla..
문제 링크 programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr 풀이 정규 표현식을 이용하여 간단하게 풀 수 있습니다. 1) regexp /1/g를 이용해 s에서 1만 뽑아줍시다. 2) 정답에 (s의 길이 - 위에서 구한 1들의 개수)를 더해줍니다. 3) 1들의 개수를 2진 변환합니다. 4) s가 1이 될 때까지 반복합시다. 정답 코드 function solution(s) { const ans = [0, 0]; while(s !== '1'){ const cnt = s.match(/1/g).length; ans[0]++; ans[1] += s.length - cnt; s = cnt.toString(2)..