열렬히.뛰기

1065번: 한수

알고리즘: 실전 > 백준 단계별로 풀기: 1번 ~ 9번 > 1065번: 한수

문제

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다.

등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다.

N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.

아이디어

  • 숫자가 100보다 큰지 작은지 판별
    • 작으면 그냥 그 수 출력
  • 십의 자리와 일의 자리 차이 비교
  • 백의 자리와 십의 자리 차이 비교
    • 일의 자리: i % 10
    • 십의 자리: (i//10) % 10
    • 백의 자리: i // 100
python
import sys
input = sys.stdin.readline
def han_su(n):
    if n < 100:
        return print(n)
    else:
        hansu = 99
        for i in range(100, n+1):
            a = (i // 10) % 10
            b = i // 100
            c = i % 10
            d = (i // 10) % 10
            if a - b == c - d :
                hansu += 1
        return print(hansu)
han_su(int(input()))