본문 바로가기

CODING/BAEKJOON72

[BAEKJOON] 7562번 나이트의 이동 8가지 방향으로 탐색하며 방문하지 않은 경우 큐에 저장한다. 그 다음 큐에서 꺼낸 현재 위치에 지금까지의 누적 거리에 1을 더해 저장한다. 방문하지 않은 위치는 0으로 초기화된 상태 그대로일 것이고, 방문했다면 누적 거리를 저장하기 때문에 0인지 아닌지로 방문 여부를 구분한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { static int I, arr[][], cnt, end_x, end_y; .. 2022. 3. 23.
[BAEKJOON] 7569번 토마토 이전에 토마토 문제를 다룬적이 있는데 아래 글 먼저 보고 오시면 좋을 것 같습니다. 오늘 문제는 이전 문제보다 조금 더 심화된 문제입니다. 2022.03.05 - [CODING/BAEKJOON] - [BEAKJOON] 7576번 토마토 [BEAKJOON] 7576번 토마토 1(익은 토마토)인 위치에서 하루가 지날 때마다 맞닿은 부분(0)이 1로 변경된다. 내 주변 탐색 후 변경하는 과정을 반복해야 한다. 너비우선탐색 문제 유형으로 큐에 삽입하여 과정을 하나씩 따라 snowwhite1106.tistory.com 0은 익혀야 할 토마토, 1은 익은 토마토, -1은 토마토가 없어서 방문하지 않아도 된다. 이번 문제는 토마토 상자가 n단으로 쌓아올려져 있고, 내 주변 상하좌우 방향 뿐만 아니라 현재 위치에서 쌓.. 2022. 3. 23.
[BAEKJOON] 4963번 섬의 개수 이차원 배열에 섬과 바다를 저장하고, 방문하지 않은 섬일 경우 bfs 방식으로 방문할 수 있는 모든 섬들을 방문처리하며 한 번의 호출로 갈 수 있는 섬들을 모두 방문한다. 특히 중요한 점이 대각선 방향으로도 섬과 섬 사이를 이동할 수 있으므로 8가지 방향으로 나아갈 수 있도록 8번의 반복문으로 다음 방문할 섬을 선택하도록 한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { static int cn.. 2022. 3. 22.
[BAEKJOON] 11724번 연결 요소의 개수 위의 예제 입력1과 2를 그림으로 나타내었다. 그래프의 연결요소는 무방향 그래프에서 서로 다른 두 정점이 경로로 연결되어 있으면서 상위 그래프의 추가 정점이 없는 부분 그래프를 의미하고, 연결요소의 개수는 아래의 그림과 같이 부분 그래프의 개수를 나타낸다. 먼저 입력받는 노드와 간선을 인접행렬 방식으로 이차원배열에 저장한다. 만약 노드 1번과 2번이 연결되어 있다면 arr [ 1 ] [ 2 ]와 arr [ 2 ] [ 1 ]에 1을, 연결이 안 되어 있다면 0으로 초기화한다. 1번과 2번이 연결되어 있다는 것은 2번과 1번이 연결되어 있다는 것과 같으므로 값을 두 번 저장하는 과정이 필수이다. (전역변수로 선언할 예정이기 때문에 모든 요소가 자동으로 0으로 초기화됨) 전체 노드를 순회하면서 아직 방문하지 .. 2022. 3. 22.
[BAEKJOON] 1697번 숨바꼭질 초기 수빈이가 있는 위치 N 과 동생의 위치 K를 보자. 수빈이가 N-1 또는 N+1 또는 N*2 위치로 이동할 수 있으니 5에서 17로 가는 경우를 그림으로 그려본 것이다. 모든 배열은 0으로 초기화한 후, 해당 위치에 방문한 적이 있으면 넘어가고 그렇지 않다면 큐에 넣어 다음 방문 위치를 저장한다. 큐에서 다음 방문 위치를 꺼내어 해당 인덱스에 지금까지의 움직인 거리에 1을 더하여 저장하는 과정을 반복한다. 다음 방문할 위치가 동생이 있는 곳이라면 즉, 동생이 있는 인덱스 위치가 0이 아니라면 반복을 중단하고 이동한 거리를 반환하여 출력한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRead.. 2022. 3. 22.
[BAEKJOON] 2606번 바이러스 이차원배열에 인접된 컴퓨터 번호를 인덱스로 간주하여 연결된 컴퓨터들은 모두 1로 채운다. 이차원배열을 이용할 때 arr[][] 배열이 있을 때 컴퓨터 1번과 2번이 연결된 것을 표현하기 위해서는 아래와 같이 인접행렬 방식으로 행과 열의 인덱스를 바꿔도 연결된 것을 알 수 있도록 한다. 1번과 2번이 연결됐다 == 2번과 1번이 연결됐다 arr[1][2] = 1; arr[2][1] = 1; 인덱스 1(1번 컴퓨터)를 시작으로 연결된 컴퓨터를 찾는다면 해당 컴퓨터와 연결된 또 다른 컴퓨터를 찾기 위해 큐에 저장한다. 큐가 텅 빌 때까지 반복하며 연결된 컴퓨터를 찾아 개수를 센다. 모든 연결된 컴퓨터의 개수를 찾는 것이 아닌, 1번 컴퓨터와의 연결관계만 확인하면 되기 때문에 bfs()를 호출할 때 매개인자로 .. 2022. 3. 14.