알고리즘/백준

백준 1065: 한수 (Python)

sssbin 2021. 8. 24. 18:06

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

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

 

def flag(n):
    n_list = list(str(n))

    if len(n_list) > 2 :
        d = int(n_list[1]) - int(n_list[0])
        m = int(n_list[1])

        for i in n_list[2:]:
            if int(i)-m != d :
                return 0
            else :
                m = i

    return 1

n = int(input())
cnt = 0

for i in range(n):
    if flag(i+1) == 1 :
        cnt += 1

print(cnt)

"한수"의 개념을 이해하는게 가장 오래 걸렸던,,!!

 

각 자릿수들이 모두 등차수열을 이루면 한수라고 한다

예를 들면 1000은 1, 0, 0, 0이 등차수열을 안 이루니까 한수가 아님

234는 2, 3, 4가 등차수열을 이루니까(공차가 1) 한수임

 

이에 따라 한 자리수(1~9), 두 자리수(10~99)는 모두 한수다!

(비교할 숫자가 1, 2개 밖에 없으니까)