코테 공부

[DP]숨바꼭질(백준 1697번), 자바(★☆)

DaEun_ 2022. 6. 27. 13:49

1697번: 숨바꼭질 (acmicpc.net)

 

1697번: 숨바꼭질

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일

www.acmicpc.net

 

고려해야 될 부분

1. N이 0인 경우

2. K가 N보다 왼쪽에 있는 경우 

 

 

if(i%2)==0 이면 dp[i]=Math.min(dp[i/2]+1, dp[i-1]+1)

if(i%2)!=0 이면 dp[i]=Math.min(dp[i-1]+1, dp[i+1]+1)

import java.util.*;

public class Main {
	

	public static void main(String[] args) {
		
		int N,K;
		Scanner sc=new Scanner(System.in);
		N=sc.nextInt();
		K=sc.nextInt();
		
	
		int[] dp=new int[K+2];
		
		if(N<=K) {
			if(N>0) {
				for(int i=N;i>0;i--) {
					dp[i-1]=dp[i]+1;
				}
			}
		
			for(int i=N+1;i<=K+1;i++) {
				if((i%2)==0) {
					dp[i]=Math.min(dp[i/2]+1,dp[i-1]+1);
					dp[i-1]=Math.min(dp[i-1], dp[i]+1);
				}
				else {
					dp[i]=dp[i-1]+1;
				}		
			}
			System.out.println(dp[K]);
		}
		
		else {
			System.out.println(N-K);
		}
				
	}
}

'코테 공부' 카테고리의 다른 글

[DP]점프 점프(백준 11060번), 자바  (0) 2022.06.29
[DP]점프(백준 1890번), 자바(ㅁㅁ)  (0) 2022.06.28
[DP]여행(백준 2157번), 자바(ㅁㅁㅁ)  (0) 2022.06.22
[DP]문제#12.동전1  (0) 2022.05.11
[DP]문제#11.동전2(☆)  (0) 2022.05.11