티스토리 뷰
반응형
문제
https://www.acmicpc.net/problem/1697
1697번: 숨바꼭질
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
풀이 코드
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 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); //수빈 위치
int K = Integer.parseInt(st.nextToken()); //동생 위치
int[] check = new int[100001]; //방문 표시용 배열 (0 <= 수빈, 동생 <= 100000)
Queue<Integer> queue = new LinkedList<>();
queue.offer(N);
int time = 0;
while (!queue.isEmpty()) {
int size = queue.size();
for (int i = 0; i < size; i++) {
Integer cur = queue.poll();
if (cur == K) { //현재 위치가 동생 위치와 같아지면 종료.
System.out.println(time);
return;
}
int plus = cur + 1;
int minus = cur - 1;
int multi = cur * 2;
if (plus <= 100000 && check[plus] != 1) {
queue.offer(plus);
check[plus] = 1;
}
if (minus >= 0 && check[minus] != 1) {
queue.offer(minus);
check[minus] = 1;
}
if (multi <= 100000 && check[multi] != 1) {
queue.offer(multi);
check[multi] = 1;
}
}
time++;
}
}
}
반응형
'코딩테스트 > BOJ' 카테고리의 다른 글
10026번 문제 적록색약 자바(JAVA) 풀이 (0) | 2023.10.22 |
---|---|
1012번 문제 유기농 배추 자바(JAVA) 풀이 (0) | 2023.10.22 |
4179번 문제 불! 자바(JAVA) 풀이 (0) | 2023.10.18 |
7576번 문제 토마토 자바(JAVA) 풀이 (0) | 2023.10.16 |
2178번 문제 미로 탐색 자바(JAVA) 풀이 (0) | 2023.10.14 |
반응형