백준알고리즘 1065번 :한수 [파이썬]

2021. 3. 31. 12:01

☞    문서의 내용은 가장 하단 참고문헌 및 사이트를 참고하여 필자가 보기 쉽도록 정리한 내용입니다.

☞    틀린 내용 및 저작권 관련 문의가 있는 경우 문의하시면 수정 및 삭제 조치하겠습니다.


문제

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


입력

첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.


출력

첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.


해설

1065번 문제의 경우 100, 101, 102 와 같이 등차수열 하는 것으로 착각할 수 있다. 하지만 문제는 각 자리가 등차수열 하는 것이기 때문에 100의 경우 1 / 0 / 0 으로 1의 자리, 2의 자리, 3의 자리가 등차수열 하는 것으로 이해해야한다. 쉽게 말해 1의 자리 2의 자리 3의자리를 모두 떼어 놓고 등차수열 하는지 보는 것이다. 아래 예를 살펴보자

 

123의 경우

1 -> 2 -> 3

1씩 증가하는 것을 볼 수 있다. [등차수열 O]

 

321의 경우

3 -> 2 -> 1

1씩 감소하는 것을 볼 수 있다. [등차수열 O]

 

101의 경우

1- > 0 -> 1

1감소하다 1이 증가하는 것을 볼 수 있다. [등차수열 X]

 


코드

H = int(input())
s = 0
for i in range(1,H+1):

    if i < 100:
        s +=1
    elif i == 1000:
        continue
    else:
        tnum = []
        for j in str(i):
            tnum.append(int(j))

        t = tnum[0] - tnum[1]
        d = tnum[1] - tnum[2]

        if t == d:
            s +=1
print(s)

 


참고문헌

 

[백준] 1065번 : 한수 - JAVA [자바]

https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌

st-lab.tistory.com

 

글 읽기 - 문제 이해가 안됩니다

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

 

백준알고리즘 1065번 문제 풀이 & 해설

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

itadventure.tistory.com