https://programmers.co.kr/learn/courses/30/lessons/43164?language=java 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr dfs 를 이용해 가능한 모든 경우를 확인하면서 그중 알파벳 순으로 가장 앞서는 답을 구하는 방식입니다. Collections.min() 의 부분에서 따로 Comparator 객체를 람다를 이용해서 넣은것을 확인할 수 있습니다. 이는 1. 긴 답이 먼저오도록 2. 둘이 길이가 같다면 알파벳 순으로 앞서는..
https://programmers.co.kr/learn/courses/30/lessons/43163?language=java 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 단어를 변환하는데 필요한 최소 횟수를 반환하는 문제이기 때문에 bfs 를 이용해 모든 경우를 확인하다가 단어를 바꿀 수 있는 tree 의 depth 를 반환하는 방식으로 코드를 작성할 수 있습니다. import java.util.*; class Solution { public boolean ca..
https://programmers.co.kr/learn/courses/30/lessons/43162?language=java 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr i 번째 노드가 어떤 network 에 속하는지에 대한 정보를 담고 있는 network 배열을 생성합니다. computers 배열을 순회하면서 network 배열을 업데이트 하는 makeNetwork 메서드를 작성합니다. makeNetwork는 dfs 를 이용하여 input 으로 들어온 idx 와 연결되어 있는 모든 network ..
https://programmers.co.kr/learn/courses/30/lessons/43165?language=java 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr dfs를 이용하여 모든 가능한 경우의 수를 구하고, 각 경우의 수가 target 과 일치하는지를 확인해서 값을 반환합니다. class Solution { public int findAnswer(int[] numbers, int target, int idx, int prevNum) { ..