![[BOJ 1697] 숨바꼭질 (Java, 그래프 탐색)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeUazy%2FbtsjiSQCm04%2Fe3IrUxt2t8qxlynVl3aOKk%2Fimg.png)

[BOJ 1697] 숨바꼭질 (Java, 그래프 탐색)알고리즘/그래프 탐색2023. 6. 9. 17:03
Table of Contents
반응형
문제 링크
https://www.acmicpc.net/problem/1697
1697번: 숨바꼭질
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
풀이
- 현재 위치, 상태(숫자)를 정점으로 보고 +1 , -1, *2 를 간선이라 정의하여 문제 풀이
- BFS 문제 풀이
- N = 100,000 이고, K = 0 인 경우 -1 을 10만번 하면 K에 도착함
=> 최대치 100,000 이므로 Integer 풀이 가능
제출 코드
import java.util.*;
import java.io.*;
public class Main {
static int N, M;
static int[] DISTANCE = new int[100001];
static boolean[] VISIT = new boolean[100001];
static void input() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
br.close();
}
static void bfs() {
Queue<Integer> que = new LinkedList<>();
que.add(N);
VISIT[N] = true;
DISTANCE[N] = 0;
while(!que.isEmpty()) {
int x = que.poll();
int y = x + 1;
if(0 <= y && y <= 100000 && !VISIT[y]) {
DISTANCE[y] = DISTANCE[x] + 1;
VISIT[y] = true;
que.add(y);
}
y = x - 1;
if(0 <= y && y <= 100000 && !VISIT[y]) {
DISTANCE[y] = DISTANCE[x] + 1;
VISIT[y] = true;
que.add(y);
}
y = x * 2;
if(0 <= y && y <= 100000 && !VISIT[y]) {
DISTANCE[y] = DISTANCE[x] + 1;
VISIT[y] = true;
que.add(y);
}
}
}
static void pro() {
bfs();
System.out.println(DISTANCE[M]);
}
public static void main(String[] args) throws Exception {
input();
pro();
}
}
반응형
'알고리즘 > 그래프 탐색' 카테고리의 다른 글
[BOJ 1012] 유기농 배추 (Java, 그래프 탐색) (0) | 2023.06.09 |
---|---|
[BOJ 4963] 섬의 개수 (Java, 격자형 그래프 탐색) (0) | 2023.06.09 |
[BOJ 3055] 탈출 (Java, 격자형 그래프 탐색) (0) | 2023.06.09 |
[BOJ 14502] 연구소 (Java, 완전탐색 + 그래프 탐색) (2) | 2023.06.09 |
[BOJ 2251] 물통 (Java, BFS/DFS) (0) | 2023.06.09 |

@leejinwoo1126 :: 천천히 하나씩
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!