๋ฌธ์ (์ถ์ฒ: 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์ ์ถ๊ฐ
๋ง๋ฌด๋ฆฌ๐ค

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 19538_๋ฃจ๋จธ (0) | 2023.06.15 |
---|---|
[Baekjoon] 13265_์์น ํ๊ธฐ (0) | 2023.06.13 |
[Baekjoon] 26169_์ธ ๋ฒ ์ด๋ด์ ์ฌ๊ณผ๋ฅผ ๋จน์ (0) | 2023.06.09 |
[Baekjoon] 24484_์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 6 (0) | 2023.06.07 |
[Baekjoon] 24483_์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 5 (0) | 2023.06.06 |