[자바] 백준 1065 : 한수

오늘·2021년 4월 12일
0

백준

목록 보기
9/9

(문제)


풀어보기

사실 처음에는 '한수'라는 거 자체가 이해되질 않았다. 이해 속도를 더디게 만들었던건 출력내용을 잘못 이해한 탓도 크다.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);
	}
}

0개의 댓글

관련 채용 정보