문제

https://www.acmicpc.net/problem/1065

풀이

입력되는 N의 최대 크기가 1000이기 때문에,
한수에 대한 특징만 이해한다면 어렵지 않게 구현이 가능하다.

  • 1~9 까지의 한 자리수는 모두 한수로 취급된다. (비교자리수가 없음)
  • 10~99 까지의 두 자리수는 모두 한수로 취급된다. (비교가 1회로 끝남)
  • 100 이상부터의 세 자리수부터 한수 비교를 진행하면 된다.
number = int(input())

if number < 100: print(number) # 두 자리수 이하면 바로 정답 출력
else:
    answer = 99                     # 우선 99개 확보
    for n in range(101, number+1):  # 100은 한수가 아니므로 101부터
        # (100자리수 - 10자리수)와 (10자리수 - 1자리수)가 같으면 한수
        if (n//100) - (n%100//10) == (n%100//10)-(n%10):
            answer += 1
    print(answer)

댓글남기기