๐Ÿ‘ฉโ€๐Ÿ’ป BOJ_5566_์ฃผ์‚ฌ์œ„๊ฒŒ์ž„

๐Ÿ’ฌ ์˜ค๋žœ๋งŒ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋งค์ผ ํ’€์–ด๋ณผ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.


๐Ÿ“„ ๋ฌธ์ œ

์ƒ๊ทผ์ด๋Š” ํ˜ผ์ž ๋ณด๋“œ ๊ฒŒ์ž„์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ด ๋ณด๋“œ ๊ฒŒ์ž„์˜ ๋ณด๋“œ๋Š” N์นธ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ์ถœ๋ฐœ์ ์€ 1์นธ, ๋„์ฐฉ์ ์€ N์นธ์ด๋‹ค. ๊ฐ ์นธ์—๋Š” ์ง€์‹œ ์‚ฌํ•ญ์ด ์ ํ˜€์žˆ๋‹ค. ์ง€์‹œ ์‚ฌํ•ญ์€ ๋ง์„ ์–ผ๋งŒํผ ์ด๋™ํ•ด์•ผ ํ•˜๋Š”์ง€๊ฐ€ ์“ฐ์—ฌ ์žˆ๋‹ค.

์ƒ๊ทผ์ด๋Š” ๋„์ฐฉ์ ์— ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ค ๋‚˜์˜จ ๋ˆˆ์˜ ์ˆ˜๋งŒํผ ๊ทธ ์นธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ์ด๋•Œ, ๋„์ฐฉํ•œ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ง€์‹œ๋งŒํผ ๋ง์„ ๋‹ค์‹œ ์ด๋™์‹œํ‚จ๋‹ค. ์ง€์‹œ ์‚ฌํ•ญ์œผ๋กœ ์ด๋™ํ•ด์„œ ๋„์ฐฉํ•œ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ง€์‹œ๋Š” ๋”ฐ๋ฅด์ง€ ์•Š๋Š”๋‹ค.

N์นธ์— ๋„์ฐฉํ–ˆ์„ ๋•Œ์™€ ๊ทธ ์นธ์„ ๋„˜๋Š” ๊ฒฝ์šฐ๋„ ๋„์ฐฉํ•œ ๊ฒƒ์ด๋‹ค.

์ƒ๊ทผ์ด๊ฐ€ ๋˜์กŒ์„ ๋•Œ ๋‚˜์˜จ ์ฃผ์‚ฌ์œ„์˜ ๋ˆˆ๊ณผ ๋ณด๋“œํŒ์˜ ์ง€์‹œ์‚ฌํ•ญ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ช‡ ๋ฒˆ ๋งŒ์— ๋„์ฐฉํ•˜๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๐Ÿ’ก ํ’€์ด ๋ฐฉ๋ฒ•

  • ๋ณด๋“œํŒ์— ์ ํžŒ N๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ์‚ฌ์œ„์— ๋‚˜์˜จ ์ˆซ์ž๋Œ€๋กœ ์ด๋™ํ•œ ๋ง์˜ ์œ„์น˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    - loc : ๋ณด๋“œํŒ ์œ„์˜ ๋ง์˜ ์œ„์น˜
  • ๋ง์˜ ์œ„์น˜์— ์ ํžŒ ์ง€์‹œ์‚ฌํ•ญ์„ ์ ์šฉํ•ด ๋ง์˜ ์œ„์น˜๋ฅผ ๋‹ค์‹œ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    - loc = loc + tmp
  • โญ๏ธ ๋ง์˜ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ๋„์ฐฉํ–ˆ๋Š”์ง€ ํ™•์ธํ•ด์ค๋‹ˆ๋‹ค.
    - if(loc >= N) ~

๐Ÿ”ฅ ์ฝ”๋“œ

import java.io.IOException;
import java.util.Scanner;

public class ์ฃผ์‚ฌ์œ„ {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		int map[] = new int[N+1];
		
		for(int i = 1; i <= N; i++) {
			map[i] = sc.nextInt();
		}
		
		int tmp = 1;
		int loc = 1;
		for(int i = 1; i <= M; i++) {
				int mix = sc.nextInt(); // ์ฃผ์‚ฌ์œ„์—์„œ ๋‚˜์˜จ ์ˆซ์ž
				//System.out.println(map[mix]);
				//System.out.print("loc");
				//System.out.println(loc);
				loc += mix; // ๋ง์˜ ์œ„์น˜
				
				// check ๋กœ์ง
				if(loc >= N) {
					System.out.println(i);
					break;
				}
				tmp = map[loc];
				//System.out.print("for");
				//System.out.println(tmp);
				
				loc += tmp; // ๋ง์˜ ์œ„์น˜ ๋‹ค์‹œ ์ ์šฉ
				
				// check ๋กœ์ง
				if(loc >= N) {
					System.out.println(i);
					break;
				}
				//System.out.println(tmp);
				
		}
		
		
	}

}

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ