목록프로그래머스 (208)
N
https://programmers.co.kr/learn/courses/30/lessons/77486?language=cpp 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr map과 dfs를 활용한 문제 풀이. 우선 enroll과 referral의 관계를 map 형태로 그려준다. 또한, cost라는 map을 이용해서 수익을 구할 것이다. enroll과 referral을 for문으로 순회하면서 map을 형성. key = enroll[i]로 하고, value = referral[i]로 저장한다. 만약 ref..
https://programmers.co.kr/learn/courses/30/lessons/86052 코딩테스트 연습 - 빛의 경로 사이클 각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진 programmers.co.kr BFS 알고리즘. 처음 풀 때는 DFS를 사용했지만, 런타임 에러 즉, 콜스택이 초과되기 때문에 BFS를 사용해야 한다. 각 좌표마다 시작하는 방향에 따라 사이클의 여부가 달라지기 때문에, 3차원 배열을 이용해 visited를 처리했다. 우선 이중 for문으로 grid를 순회한다. 순회를 하면서 각 좌표마다 4방향으로 탐색을 진행한다..
https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr Map을 이용한 문제 풀이. map = enroll과 referral 배열의 부모-자식 관계를 나타내기 위한 Map. profit = 각 사람들의 판매 이익을 나타내기 위한 Map. enroll을 순회하면서 부모-자식 관계를 나타내도록 하자. enroll[i]를 key, referral[i]를 value로 가지도록 하여 map에 저장한다. 이후 seller..
https://programmers.co.kr/learn/courses/30/lessons/92344 코딩테스트 연습 - 파괴되지 않은 건물 [[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5]] [[1,0,0,3,4,4],[1,2,0,2,3,2],[2,1,0,3,1,2],[1,0,1,3,3,1]] 10 [[1,2,3],[4,5,6],[7,8,9]] [[1,1,1,2,2,4],[1,0,0,1,1,2],[2,2,0,2,0,100]] 6 programmers.co.kr 새로운 알고리즘을 배웠다. 누적합을 효율적으로 처리할 수 있는 알고리즘이다. IMOS 알고리즘이라고, 아래 블로그에서 설명이 자세하게 잘 나와있어서 참고해서 풀 수 있었다. https://nicotina04...
https://programmers.co.kr/learn/courses/30/lessons/92335# 코딩테스트 연습 - k진수에서 소수 개수 구하기 문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소 programmers.co.kr 주어진 n을 k로 나눠 나머지 값을 transformed 배열에 저장한다. 해당 배열을 reverse() 함수로 뒤집은 다음, join("")을 통해 한 문자열로 통합하고, 다시 split("0") 함수로 0을 구분자로 하여 결과를 만든다. 이 결과를 forEach문을 통해 curr이 공백이 아니고, isPr..
https://programmers.co.kr/learn/courses/30/lessons/92343 코딩테스트 연습 - 양과 늑대 [0,0,1,1,1,0,1,0,1,0,1,1] [[0,1],[1,2],[1,4],[0,8],[8,7],[9,10],[9,11],[4,3],[6,5],[4,6],[8,9]] 5 [0,1,0,1,1,0,1,0,0,1,0] [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6],[3,7],[4,8],[6,9],[9,10]] 5 programmers.co.kr 완전 탐색. 우선 0번째 노드는 항상 양이 있기 때문에 answer = 1로 시작한다. length는 info의 길이로, 노드의 개수가 된다. graph는 각 노드에서 자식 노드가 있으면 자식 노드의 번호를 배열 ..
https://programmers.co.kr/learn/courses/30/lessons/12971?language=javascript 코딩테스트 연습 - 스티커 모으기(2) N개의 스티커가 원형으로 연결되어 있습니다. 다음 그림은 N = 8인 경우의 예시입니다. 원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내어 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록 programmers.co.kr DP를 이용한 문제 풀이. 하나의 스티커를 땠을 때, 양 옆의 스티커를 사용하지 못하기 때문에 DP 테이블을 2개 사용해야 한다. 왜냐하면 아래처럼 두 가지 경우 중 합이 큰 값을 골라야 하기 때문이다. 1) 첫번째 스티커부터 땠을 때(가장 마지막에 있는 스티커를 사용하지 못함) 2) 두번째 스티커부터 땠을 때..
https://programmers.co.kr/learn/courses/30/lessons/12979?language=javascript 코딩테스트 연습 - 기지국 설치 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5 programmers.co.kr 조건이 크지 않기 때문에 완전 탐색으로 풀 수 있다. 기지국 번호가 1부터 시작하니 start = 1로 시작. 인덱스는 0부터 시작한다. start { let answer = 0; let index = 0; let start = 1; while(start = stations[index] - w && start