사실 처음에는 '한수'라는 거 자체가 이해되질 않았다. 이해 속도를 더디게 만들었던건 출력내용을 잘못 이해한 탓도 크다.N보다 작거나 같은 한수의 개수
를 출력하라했는데 그걸 N보다 작거나 같은 한수
로 잘못 읽은 것이다. 잘못읽었다는 걸 알기까지는 엄청 여러번 읽은 후..
'한수'에 대해 잘 설명이 되어있다
이 분의 티스토리를 참조하면 이해가 더 빠를거 같다.
public class A2 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 버퍼는 String형태로 넘어오니까 형변환 해주기
int endNum = Integer.parseInt(br.readLine());
// 출력해줄 out과
// 각 자리 수를 구해줄 hund, ten, one
int out, hund, ten, one;
// 한수를 찾아 누적해줄 cnt
int cnt=0;
// 만약 주어진 수가 100 미만이라면 그 수는 모두 한수이다.
if (endNum < 100) {
out = endNum;
// 100보다 크다면 각 자리의 수를 구해서
} else {
for(int i=100; i<=endNum; i++) {
hund = i/100;
ten = (i%100)/10;
one = (i%100)%10;
// 빼본다. 그랬을 때 차이가 같으면 한수
if((hund-ten) == (ten-one)) {
cnt++;
}
}
// 100보다 작다면 모두 한수니까 99를 기본으로 깔아주고
// 그 이후에 쌓인 수들을 계산해서 cnt에 누적된 횟수를 더해준다
out = cnt+99;
}
System.out.println(out);
}
}