알고리즘 풀이/백준

[백준][Java] 1065번 한수

배게 2018. 4. 17. 21:45
728x90

N이 1~100인 경우와 1000인 경우 때문에 2번 틀렸습니다.

3자리수 이상부터 비교할 수 있는 수열이 생기기 때문에

2자리수까지는 전부 한수입니다.

3자리수부터 각 자리수의 차이값을 비교하여 한수인지 아닌지 결정합니다.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.util.*;

public class Main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int res=0;
		int N=sc.nextInt();
		
		int numDif,l,h,j;
		
		if(N<100) res=N;
		else if(N<=1000){
			res=99;
			for(int i=100; i<=N; i++) {
				j=i;
				numDif=j%10-(j/10)%10;
				while(true) {	
					j/=10;
					l=j%10;
					h=(j/10)%10;
					if(j/10==0) {
						res++;
						break;
					}
					else if(numDif !=l-h) break;
					else numDif=l-h;
				}
				
			}
		}
		System.out.println(res);
	}
}