05-15 08:39
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

miinsun

[Algorithm]์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž๋ฐ”_53 ์†ก์•„์ง€ ์ฐพ๊ธฐ 1 (BFS:์ƒํƒœํŠธ๋ฆฌํƒ์ƒ‰) ๋ณธ๋ฌธ

Algorithm/Java

[Algorithm]์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž๋ฐ”_53 ์†ก์•„์ง€ ์ฐพ๊ธฐ 1 (BFS:์ƒํƒœํŠธ๋ฆฌํƒ์ƒ‰)

miinsun 2022. 1. 31. 01:42

 

๐Ÿ’ฌ ๋ฌธ์ œ ์„ค๋ช…

ํ˜„์ˆ˜๋Š” ์†ก์•„์ง€๋ฅผ ์žƒ์–ด๋ฒ„๋ ธ๋‹ค. ๋‹คํ–‰ํžˆ ์†ก์•„์ง€์—๋Š” ์œ„์น˜์ถ”์ ๊ธฐ๊ฐ€ ๋‹ฌ๋ ค ์žˆ๋‹ค. ํ˜„์ˆ˜์˜ ์œ„์น˜์™€ ์†ก์•„์ง€์˜ ์œ„์น˜๊ฐ€ ์ˆ˜์ง์„ ์ƒ์˜ ์ขŒํ‘œ ์ ์œผ๋กœ ์ฃผ์–ด์ง€๋ฉด ํ˜„์ˆ˜๋Š” ํ˜„์žฌ ์œ„์น˜์—์„œ ์†ก์•„์ง€์˜ ์œ„์น˜๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

์†ก์•„์ง€๋Š” ์›€์ง์ด์ง€ ์•Š๊ณ  ์ œ์ž๋ฆฌ์— ์žˆ๋‹ค. ํ˜„์ˆ˜๋Š” ์Šค์นด์ด ์ฝฉ์ฝฉ์„ ํƒ€๊ณ  ๊ฐ€๋Š”๋ฐ ํ•œ ๋ฒˆ์˜ ์ ํ”„๋กœ ์•ž์œผ๋กœ 1, ๋’ค๋กœ 1, ์•ž์œผ๋กœ 5๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ตœ์†Œ ๋ช‡ ๋ฒˆ์˜ ์ ํ”„๋กœ ํ˜„์ˆ˜๊ฐ€ ์†ก์•„์ง€์˜ ์œ„์น˜๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

 

Hint!

  • 3๊ฐœ์˜ ์„ ํƒ์ง€๊ฐ€ ์žˆ๋Š” ํŠธ๋ฆฌ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.
  • ํ˜„์ˆ˜์˜ ์œ„์น˜์—์„œ +1, -1, +5๋ฅผ ์„ ํƒํ•ด ์†ก์•„์ง€๋ฅผ ์ฐพ์ž
  • ํ•œ๋ฒˆ ์ง€๋‚˜๊ฐ”๋‹ค ์ขŒํ‘œ๋Š” ํ์— ๋‹ด์ง€ ์•Š๋„๋ก ์ฒดํฌ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์ž

 

๐Ÿ”จ ์ž…์ถœ๋ ฅ ์˜ˆ

์ž…๋ ฅ - ์ฒซ ๋ฒˆ์งธ ์ค„์— ํ˜„์ˆ˜์˜ ์œ„์น˜ S์™€ ์†ก์•„์ง€์˜ ์œ„์น˜ E๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ง์„ ์˜ ์ขŒํ‘œ ์ ์€ 1๋ถ€ํ„ฐ 10,000๊นŒ์ง€์ด๋‹ค.

5 14

์ถœ๋ ฅ - ์ ํ”„์˜ ์ตœ์†ŒํšŸ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. ๋‹ต์€ 1์ด์ƒ์ด๋ฉฐ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

3

 

 

โ€‹

๐Ÿ’ป Solution.java

import java.util.*;

public class Main {
	int[] dis = {1, -1, 5}; // 3๊ฐœ์˜ ์„ ํƒ์ง€
	int[] ch; // ์ค‘๋ณต ์ฒดํฌ ๋ฐฐ์—ด
	Queue<Integer> Q = new LinkedList<>();
	
 	public int solution(int s, int e) {
 		ch = new int[10001];
 		ch[s] = 1; // ํ˜„์ˆ˜ ๋ฃจํŠธ ์ฒดํฌ
 		Q.offer(s);
 		int L = 0; // ๋ ˆ๋ฒจ ์ดˆ๊ธฐํ™”, ์ตœ์†Œ ํšŸ์ˆ˜
 		
 		while(!Q.isEmpty()) {
 			int len = Q.size();
 			for(int i = 0; i < len; i++) {
 				int x = Q.poll();
 				for(int j = 0; j < 3; j++) { //3๊ฐœ ํƒ์ƒ‰์ง€ ๋ฐฉ๋ฌธ
 					int nx = x + dis[j];
 					if(x == e) return L + 1;
 					if(nx>= 1 && nx <= 10000 && ch[nx] == 0) {
 						ch[nx] = 1;
 						Q.offer(nx);
 					}
 				}
 			}
 			L++;
 		}
 		
		return 0;
	}
	
	public static void main(String[] args){
		Main main = new Main();
		Scanner sc = new Scanner(System.in);
		
		int s = sc.nextInt();
		int e = sc.nextInt();
				
		
		System.out.println(main.solution(s, e));
		
		sc.close();
		return ;
	}
}

 

 

 

Comments