첫째 줄에는 체스판의 한 변의 길이 둘째 줄에는 나이트가 현재 있는 칸 셋재 줄에는 나이트가 이동하려는 칸이 주어진다. 0, 0에서 시작해서 -> 7, 0 도착 최소 몇 번만에 이동할 수 있는지 확인하는 문제다. => BFS를 이용해서 최솟값을 구하자 처음 나이트가 이동할 수 있는 경우의 수, 가운데 시작에서 나이트는 저렇게 이동할 수 있음을 알고 시작하자. col, row / col2, row2를 따로 나누었다. 2차원 배열을 생성해서 예를 들어보자. 이런식으로 이동할 수 있음을 나타낸다. 두 번째, col2와 row2를 이용했을 때 이동할 수 있는 예를 들어보자. 이렇게 이동함을 알 수 있다. 그럼 이제 같이 이동했을 때를 나타내보자 겹칠 일이 없이, 내가 이동할 수 있는 좌표를 Queue에 담고 한..
= 내가 접근한 방법 ( 틀림 ) = dfs라는 함수 안에서 다시 dfs(y - 1, x) dfs(y + 1, x) dfs(y, x - 1) dfs(y, x + 1) 이런 식으로 함수를 구성했다. 근데 이렇게 했을 때 문제점이 뭐냐면 방문 여부를 체크는 할 수 있어도 지렁이의 개수를 만족시키지 못했다. 그러니까, 처음 배추가 (0, 0) 을 들어간다고 가정하고 배추가 있으면 result++, 그리고 인접해있는 배추들을 다 방문처리를 해서 맨 처음 for문에서 다시 방문을 못하게 만들어야 한다는 것이다. 이러한 조건을 만족하려면 내가 맨 처음 구성했던 dfs(y - 1, x) dfs(y + 1, x) dfs(y, x - 1) dfs(y, x + 1) 이런 식으로는 해결 할 수 없었다. = 해결한 방법 = ..
이 문제를 풀기 전에 DFS와 BFS에 대한 내용을 보고 푸는 것을 추천한다. https://byungil.tistory.com/203 백준 - 그래프와 순회 1260 DFS와 BFS문제 / 문제풀이, 해설 링크 https://www.youtube.com/watch?v=d3R1s_OmwAk DFS와 BFS에 대한 해설은 이 영상을 참조하는게 좋을 것 같다. 나도 접근 방법을 아예 몰랐기 때문에 이 영상으로 공부했다. DFS는 깊이 우선, BFS 너비 우선 DFS는 한 byungil.tistory.com 1260, DFS와 BFS문제와 똑같은 문제다. 이전에 문제를 완벽하게 이해했기 때문에 이렇게 간단한 문제는 어려움 없이 해결할 수 있었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15..
https://www.youtube.com/watch?v=d3R1s_OmwAk DFS와 BFS에 대한 해설은 이 영상을 참조하는게 좋을 것 같다. 나도 접근 방법을 아예 몰랐기 때문에 이 영상으로 공부했다. DFS는 깊이 우선, BFS 너비 우선 DFS는 한 곳만 죽어라 파고, BFS는 여러개를 골고루 판다는 느낌이다 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273import java.io.BufferedReader;import java.io.IOException;import java.io.InputStrea..