내가 푼 방식은 이러하다 

99이하의 자연수는 모두 한수가 되므로 99이하의 양의 정수가 주어졌을 때는 한수의 개수가 그 양의 정수 값이 된다.

따라서 100이상의 수가 관건이다.

일의자리 숫자, 십의자리 숫자, 백의자리 숫자를 각각 구해서 일의자리 숫자-십의자리 숫자 = 십의자리 숫자-백의자리 숫자를 해주면 한수의 조건이 된다.

아래 내가 코딩한 것을 보면 이해가 될 것이다.

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {

	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int n = Integer.parseInt(br.readLine());
		int count=0;
		int d1, d2;
		
		
		if(n<100) {
			bw.write(n + "\n");
			bw.flush();
		}
		else {
			for(int i=100; i<=n; i++) {
				d1 = (i%10)-((i/10)%10); //일의자리 숫자에서 십의자리 숫자를 뺀 값
				d2 = ((i/10)%10)-((i/10)/10); //십의자리 숫자에서 백의자리 숫자를 뺀 값
				if(d1==d2) {
					count++;
				}
			}
			count+=99; //100보다 작은 수는 모두 한수
			bw.write(count + "\n");
			bw.flush();
		}
	}
}

 

반응형

+ Recent posts