๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 11060_์ ํ”„ ์ ํ”„

๋ฟŒ์•ผ._. 2023. 6. 12. 17:33

Silver II

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/11060)

< ์ ํ”„ ์ ํ”„ >

 

๋ฌธ์ œ ํ’€์ด

 

bfs๋ฅผ ํ™œ์šฉํ•˜๋ฉฐ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๋ ์นธ์œผ๋กœ ๊ฐ€๊ธฐ ์œ„ํ•ด ์ตœ์†Œ ๋ช‡ ๋ฒˆ ์ ํ”„๋ฅผ ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๊ตฌํ•œ๋‹ค.

 

 

 

 my solution (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 _11060_ { // ์ ํ”„ ์ ํ”„
	static int arr[], visited[], n;
	public static void main(String[] args) throws IOException {
		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		n=Integer.parseInt(bf.readLine());
		
		arr=new int[n];
		visited=new int[n];
		st=new StringTokenizer(bf.readLine());
		
		for(int i=0; i<n; i++) {
			arr[i]=Integer.parseInt(st.nextToken());
			visited[i]=-1;
		}
		
		visited[0]=0;
		bfs(0);
		
		System.out.println(visited[n-1]);
	}
	private static void bfs(int num) {
		Queue<Integer>queue=new LinkedList<>();
		queue.add(num);
		
		while(!queue.isEmpty()) {
			int idx=queue.poll();
			int temp=arr[idx];
			for(int i=1; i<=temp; i++) {
				if(idx+i<n && (visited[idx+i]==-1 || visited[idx+i]>visited[idx]+1)) {
					visited[idx+i]=visited[idx]+1;
					queue.add(idx+i);
				}
			}
		}
	}
}

 

Main

- ๋ฏธ๋กœ ํฌ๊ธฐ (n) ์ž…๋ ฅ

- arr : ๋ฏธ๋กœ ์ •๋ณด ์ €์žฅ
  visited : ์ตœ์†Œ ์ ํ”„ ํšŸ์ˆ˜ ์ €์žฅ

- ๊ฐ€์žฅ ์™ผ์ชฝ์—์„œ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ visited์˜ 0๋ฒˆ์งธ๋ฅผ 0์œผ๋กœ ์ €์žฅ ๋ฐ bfs ํ•จ์ˆ˜ ํ˜ธ์ถœ

- visited์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๋ ๊ฐ’ ์ถœ๋ ฅ

 

bfs(์‹œ์ž‘ ์œ„์น˜ num)

- queue์— ์‹œ์ž‘ ์œ„์น˜ ์ถ”๊ฐ€

- queue๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต -> ๋ฏธ๋กœ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜์—ฌ ๋ฏธ๋กœ ๋ฒ”์œ„ ์•ˆ์ด๋ฉฐ, ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ณณ์ด๊ฑฐ๋‚˜ ์ตœ์†Œ ์ ํ”„ ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅํ•˜๋ฉด visited ๊ฐ’ ์ €์žฅ ๋ฐ queue์— ์ถ”๊ฐ€

 


๋งˆ๋ฌด๋ฆฌ๐Ÿค”