목록프로그래머스 (208)
N
https://programmers.co.kr/learn/courses/30/lessons/64064 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr const solution = (user_id, banned_id) => { const list = []; const answer = []; const dfs = (index, map) => { if(index === list.length){ if(map.size === list.length){ const string = []; for(const [k, _] o..
https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr BFS 풀이. countDiffer()함수. 인자로 받아온 word와 target의 다른 문자가 1개인지 확인하는 함수. for문으로 word의 길이만큼 반복하면서, 문자가 몇개나 다른지 count로 확인한다. 만약 count === 1이라면 true를, 아니라면 false를 리턴한다. solutino() 함수. 정답을..
https://programmers.co.kr/learn/courses/30/lessons/42861?language=javascript 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr union & find를 이용한 문제 풀이. 우선 parent를 저장하는 n 크기의 배열을 선언하여 자기 자신을 가리키도록 한다. 이후 costs를 비용의 오름차순으로 정렬. for문으로 costs를 순회. costs[0]은 출발점, costs[1]은 도착점이므로 unionFind 함수에 각 노드 번호를 전달해 parent를 찾는다. 만약 n번의 노드의 부모가 n이라면 그대로 n을 리턴해주고, 그렇지 않다면 루트의 번호를 계..
https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 다익스트라를 이용한 문제풀이. 우선 road에 담겨있는 정보(시작 마을, 도착 마을, 비용)를 담을 수 있는 graph를 선언. dist는 각 마을까지 갈 수 있는 최소 비용을 저장하는 배열이다. queue는 다익스트라를 진행할 때 사용하는 배열. for문으로 road에 담겨져 있는 정보를 graph에 담는다. start 번호로 시작하는..
https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 12주차 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 제한 사항이 크지 않기 때문에 모든 경우의 수를 구해 답을 찾으면 된다. 조합을 위해 next_permutaion을 이용. 인덱스의 위치를 next_permutation()을 이용해 모든 경우의 수를 구하고, for문을 통해 조합된 인덱스로 던전을 돈다. 이후, answer을 갱신해 나가면 끝! #include #include #include #incl..
https://programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 플로이드 와샬을 이용. 우선 n + 1 * n + 1의 크기만큼 배열을 선언하여, ..
https://programmers.co.kr/learn/courses/30/lessons/86051 코딩테스트 연습 - 없는 숫자 더하기 0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 0 ~ 9의 숫자의 총합은 45다. numbers 벡터에서 없는 숫자의 총합이기 때문에, numbers의 원소를 빼면 답이다. #include #include using namespace std; int solution(vector numbers) { int answer = 45; for(int i = 0; i <..
https://programmers.co.kr/learn/courses/30/lessons/86971?language=cpp 코딩테스트 연습 - 9주차 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr bfs를 활용한 문제 풀이. 우선 주어진 wires 벡터로 그래프를 그려 주도록 하자. 이후 한 노드를 선택해 연결 되어 있는 노드를 끊고 BFS 탐색을 진행하여 끊은 노드의 개수를 구하면 된다. 이때, n * n 크기의 visited 벡터를 만들어, 이미 끊었던 간선을 다시 끊는 일이 없도록 가지를 친다. bfs() 함수에 그려 놓았던 그래프와 n, 현..