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) { ..
https://programmers.co.kr/learn/courses/30/lessons/42842?language=java 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 완전탐색 문제로 나와있지만, 노란색 타일의 가로 세로 값을 x y 로 정하고 연립방정식을 작성하면 풀 수 있습니다. 연립방정식을 풀다보면 x, y 에 대해 2차 방정식이 주어지는데 근의 공식을 이용하면 쉽게 해를 구할 수 있습니다. class Solution { public int[] solution(int brown, int yel..