Home 백준 1065 한수
Post
Cancel

백준 1065 한수

백준 1065 한수

문제

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

분석

예전에 시도했다 머리 아파서 안풀었던 문제다.
일단 한수는 연속된 두 개의 수의 차이가 일정한 수열을 말한다고하니, 한자리수도 한수라고한다.
1부터 99까지는 모두 한수이다.

예제 입력 1을 보면 110을 넣고 출력으로 99가 나온다.
1~99는 모두 한수이고, 100~110에는 한수가 없다. 이를 바탕으로 한수에대해서 비교적 정확히 알 수 있었다.

1
2
3
4
5
6
7
8
9
10
11
12
num = int(input())
h = 99

if num<100:
    h = num
else:
    for _ in range(100, num+1):
        n = list(map(int, str(_)))
        if n[0]-n[1] == n[1]-n[2]:
            h += 1

print(h)
1
119
This post is licensed under CC BY 4.0 by the author.

백준 25083 새싹

백준 17478 재귀함수가 뭔가요?

Comments powered by Disqus.