Baekjoon Online

[python] 백준 1065번_한수

dalgorithm 2021. 1. 22. 13:06
728x90

출처: www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net

한수 분류

시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 128 MB 62876 32290 27487 51.576%

문제

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

입력

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

출력

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

예제 입력 1

110

예제 출력 1

99

예제 입력 2

1

예제 출력 2

1


한수를 자릿수로 생각해본다면 이해가 더 쉬울 것이다.

 

예를 들어, 1의 경우 비교할 다른 수가 없다. 따라서 한자리 수는 모두 한수라고 볼 수있다.

그리고 21 또한, 비교할 다른 자리 수가 없다. 두자리 수도 모두 한수이다. 그 다음으로는 246을 봐보자.

각 자리 수의 차는 2로 한수가 성립한다. 이렇게 (백의자리 수-십의자리 수)와 (십의자리 수-일의자리 수)가 같을 경우를 찾아주면 된다. 

 

따라서 i가 100보다 작다면 한수 count에 +1을 해준다.

그리고 나서 세자리 숫자에 대한 계산을 나타내주면된다. 

 

1
2
3
4
5
6
7
8
9
10
= int(input())
Hcount= 0
for i in range(1, n + 1):
    if i < 100:
        Hcount+= 1
    else:
        ns = list(map(intstr(i)))
        if ns[0- ns[1== ns[1- ns[2]:
            Hcount+= 1
print(Hcount)
cs
728x90