Skip to content

[백준] 1065. 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다.

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


이 문제를 풀 때는 주의할 점이 하나 있는데, 한 자리, 두 자리 수는 전부 한수라는 점이다. 그 점을 제외하면 아래와 같이 각 자리수가 등차수열인지 확인하는 로직만 작성하면 쉽게 풀이할 수 있다.

def han(n):
    t = [int(v) for v in list(str(n))]
    return True if n < 100 and n > 0 \
        else True if len({t[i + 1] - t[i] for i in range(len(t) - 1)}) == 1 \
        else False


print(sum(han(i) for i in range(int(input()) + 1)))

Reference