본문 바로가기

전체 글61

해시 - 신고결과받기 프로그래머스 (카카오) - 신고 결과 받기 해당 문제는 '신고 받은자'라는 키를 기준으로 신고한 사람들의 집합을 저장 한 후, 각 id_list 별 신고 받은자에 맞는 결과(신고한 사람의 수가 k번 이상)에 id_list의 값들이 있다면 해당 카운트를 증가시키는 방식으로 문제를 해결했습니다. public int[] solution(String[] id_list, String[] report, int k) { int[] answer = new int[id_list.length]; Map reportMap = new HashMap(); for (String list : report) { String[] info = list.split(" "); Set reportSet = reportMap.g.. 2022. 3. 21.
DFS - 단어변환 프로그래머스 (DFS) 단어변환 해당 문제는 DFS을 통해 풀었습니다. DFS 관련 문제가 아니였으면 못풀었을듯 합니다. 다른 분들 코드와 유사하게 단어가 1개만 다를 경우 다시 dfs를 호출해 다음 1개만 다른 단어를 찾는 방식입니다. 전체를 탐색해야하기 때문에 방문후 visited를 false로 다시 되돌렸습니다. private static boolean[] visited; public int solution(String begin, String target, String[] words) { visited = new boolean[words.length]; return dfs(begin, target, words, 0); } public int dfs(String begin, String target.. 2022. 3. 18.
그래프 - 가장 먼 노드 프로그래머스 (그래프) - 가장 먼 노드 해당 문제는 BFS 알고리즘을 활용해서 푸는 문제였습니다. 최상단 1번노드 부터 시작하여 1번 노드까지의 길이를 1로 시작하여 해당 노드와 연결된 다른 노드들의 정보를 큐에 넣고, 미리 만들어둔 해당 노드까지의 길이를 저장하는 배열에 현재노드까지의 길이 + 1의 값을 저장해 둡니다. edge의 좌우 순서가 중요하지 않으므로 연결 노드를 잘 찾아야 했습니다. public int solution(int n, int[][] edge) { int answer = 0; int[] nodeLengths = new int[n + 1]; nodeLengths[1] = 1; Queue bfsQueue = new LinkedList(); bfsQueue.add(1); while (.. 2022. 3. 17.