๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[๋ฐฑ์ค€ ์Šคํ„ฐ๋”” 1์ฃผ์ฐจ] 1697๋ฒˆ ์ˆจ๋ฐ”๊ผญ์งˆ ์‹ค๋ฒ„1 - ์ž๋ฐ”(JAVA) / BFS

๐Ÿ“‘ ๋ฌธ์ œ

https://www.acmicpc.net/problem/1697

 

1697๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ

์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  N(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  K(0 ≤ K ≤ 100,000)์— ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ

www.acmicpc.net

๋”๋ณด๊ธฐ

๋ฌธ์ œ

์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  N(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  K(0 ≤ K ≤ 100,000)์— ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ ๋•Œ ๊ฑท๋Š”๋‹ค๋ฉด 1์ดˆ ํ›„์— X-1 ๋˜๋Š” X+1๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค. ์ˆœ๊ฐ„์ด๋™์„ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” 1์ดˆ ํ›„์— 2*X์˜ ์œ„์น˜๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค.

์ˆ˜๋นˆ์ด์™€ ๋™์ƒ์˜ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ˆ˜๋นˆ์ด๊ฐ€ ๋™์ƒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„์ด ๋ช‡ ์ดˆ ํ›„์ธ์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์— ์ˆ˜๋นˆ์ด๊ฐ€ ์žˆ๋Š” ์œ„์น˜ N๊ณผ ๋™์ƒ์ด ์žˆ๋Š” ์œ„์น˜ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N๊ณผ K๋Š” ์ •์ˆ˜์ด๋‹ค.

 

์ถœ๋ ฅ

์ˆ˜๋นˆ์ด๊ฐ€ ๋™์ƒ์„ ์ฐพ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

 

 

 

 

 

โœ’๏ธ ํ’€์ด

 

๐Ÿ’ก ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์ด์ „์— ๋ฐฉ๋ฌธํ•œ ์œ„์น˜๋Š” ๋‹ค์‹œ ๋ณผ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๋‹ค.

 

 

๐Ÿ’ก ํ•œ ์ดˆ์— ์ˆ˜๋นˆ์ด๋Š” ๊ฑธ์–ด์„œ ์•ž์œผ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜/ ๊ฑธ์–ด์„œ ๋’ค๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜/ ์ˆœ๊ฐ„์ด๋™์„ ํ•˜๊ฑฐ๋‚˜, ์„ธ ๊ฐ€์ง€์˜ ์„ ํƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์–ด๋–ป๊ฒŒ ์ด๋™ํ•˜๋“  ์ด์ „์— ํ•œ ์„ ํƒ์ด ๊ฐ™์€ ๊นŠ์ด(์ดˆ)๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋งค ๋ฃจํ”„๋งˆ๋‹ค ํ์— ๋‚จ์•„์žˆ๋Š” ์ด๋™๊ฐ’์„ ๋ชจ๋‘ ๋นผ์„œ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผํ•œ๋‹ค. ๋ชจ๋‘ ๊ฐ™์€ ์‹œ๊ฐ„๋Œ€์— ์ด๋™ํ•œ ๊ฒฝ์šฐ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 โœ”๏ธ 0์ดˆ์— ์ˆ˜๋นˆ์ด(ํ˜„์žฌ์œ„์น˜ 5)๋Š” ์•ž(6), ๋’ค(4), ์ˆœ๊ฐ„์ด๋™(10) ์„ธ ๊ฐœ๋ฅผ ๋ชจ๋‘ ํ–ˆ๋‹ค. ์ด๋•Œ ์ด๋™์œ„์น˜๋ฅผ ์ €์žฅํ•œ ํ ์‚ฌ์ด์ฆˆ๋Š” 3์ด ๋œ๋‹ค.

6 4 10

 โœ”๏ธ 1์ดˆ์— ์ˆ˜๋นˆ์ด๋Š” ํ ์‚ฌ์ด์ฆˆ 3๋งŒํผ ์ด๋™๊ฐ’์„ ๋นผ์„œ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ด๋‹ค.

 ์œ„์น˜6์—์„œ ์•ž(7), ์ˆœ๊ฐ„์ด๋™(12)๋ฅผ ํ•˜๊ณ , ์œ„์น˜ 4์—์„œ ๋’ค(3), ์ˆœ๊ฐ„์ด๋™(8)์„ ํ•˜๊ณ , ์œ„์น˜ 12์—์„œ ์•ž(13), ๋’ค(11), ์ˆœ๊ฐ„์ด๋™(24)์„ ํ•˜๊ณ ๋‚˜๋ฉด ํ์˜ ์ƒํƒœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์•„์ง„๋‹ค.

7 12 3 8 13 11 24

 โœ”๏ธ2์ดˆ์—๋Š” ํ ์‚ฌ์ด์ฆˆ 7๋งŒํผ ์ด๋™๊ฐ’์„ ๋นผ์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. 

 ์ด๋ ‡๊ฒŒ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

 

 

 

 

 

 

 

 

๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ: ์ž๋ฐ”(Java)

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_๋ฐฑ์ค€_1697_์ˆจ๋ฐ”๊ผญ์งˆ_์‹ค๋ฒ„1 {

	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 max = 100000;
		boolean[] visited = new boolean[max+1];
		
		Queue<Integer> queue = new LinkedList<Integer>();
		queue.offer(N);
		
		int time=0;
ex:		while(true) {
			int size=queue.size();
			for (int i = 0; i < size; i++) {//์ด์ „ ํƒ€์ž„์— ์ด๋™ํ•œ ๊ฒฝ์šฐ๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•œ๋‹ค.
				int cur = queue.poll();
				visited[cur]=true;
				
				if(cur==K) break ex;
				if(cur*2 <= max && !visited[cur*2]) queue.offer(cur*2);
				if(cur-1 >= 0 && !visited[cur-1]) queue.offer(cur-1);
				if(cur+1 <= max && !visited[cur+1]) queue.offer(cur+1);
			}
			time++;
		}
		System.out.println(time);
	}//end of main
}//end of class

 

 

 

 

 

 

 

 

๐Ÿ’Ž ๐Ÿ’Ž ๐Ÿ’Ž

 

 

๏ผฐ๏ฝ๏ฝ“๏ฝ”๏ฝ…๏ฝ„ ๏ผข๏ฝ™ ๏ผณ๏ผก๏ผน

๐˜›๐˜ฉ๐˜ข๐˜ฏ๐˜ฌ๐˜ด ๐˜ง๐˜ฐ๐˜ณ ๐˜ณ๐˜ฆ๐˜ข๐˜ฅ๐˜ช๐˜ฏ๐˜จ