Coding Test/Baekjoon

[백준] 1065번 한수 - Python

라딘 2022. 9. 7. 16:36

 

 

 

1065번: 한수

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

www.acmicpc.net

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

 

문제

한수는 각 자리 수가 등차수열의 형태인 수입니다.

N을 입력받아 1보다 크고 N보다 작거나 같은 한수의 개수를 구하는 문제입니다.

이때 N은 1000보다 작거나 같은 자연수로 주어집니다.

 

 

아이디어

N이 최대 1000이므로 최대 4자리 수까지만 입력받을 수 있습니다.

또한 100미만의 수는 모두 한수가 되므로, 100부터 999까지의 수를 판별하는 것에 초점을 두었습니다.

N이 100부터 999 사이일 경우에는 각 자리 수를 리스트로 저장하고, 차이를 구하여 등차수열의 여부를 결정했습니다.

 

 

코드

N = int(input())
count = 99

if N<100:
    print(N)
elif (N<1000):
    for i in range(100, N+1):
        list_N = list(map(int, list(str(i))))
        if (list_N[0] - list_N[1] == list_N[1] - list_N[2]):
            count +=1
    print(count)
elif (N == 1000):
    for j in range(100, 1000):
        list_N = list(map(int, list(str(j))))
        if (list_N[0] - list_N[1] == list_N[1] - list_N[2]):
            count +=1
    print(count)