코딩일지/python 백준 알고리즘

python 백준 알고리즘 1065번: 한수

야언 2022. 9. 6. 19:03

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

 

1065번: 한수

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

www.acmicpc.net

※ 각 자리가 등차수열 ->  한자리수, 두자리수 숫자는 전부 한수일 것이다.(예제 1로 추측)

셀프넘버 문제와 비슷한 방식으로 숫자를 자리수대로 분리하여 비교하기.

1,000은 한수가 아니기때문에 세자리 수 안에서만 비교해서 백의자리 - 십의자리 == 십의자리 - 일의자리 이면 등차수열(한수) 성립.

num_list = list(map(int,str(i)))    ### 숫자를 자릿수대로 분리
      
num_list[0]-num_list[1] == num_list[1]-num_list[2]:    ### 백의자리 - 십의자리 == 십의자리 - 일의자리

 

 

 

내 제출

def hansu(num) :
    cnt = 0
    for i in range(1, num+1):   ### 1부터 num까지
        num_list = list(map(int,str(i)))    ### 숫자를 자릿수대로 분리
        if i < 100:
            cnt += 1    ### 100보다 작으면 모두 한수
        elif num_list[0]-num_list[1] == num_list[1]-num_list[2]:
            cnt += 1    ### x의 각 자리가 등차수열이면 한수
    return cnt

num = int(input())
print(hansu(num))