Problem
https://www.acmicpc.net/problem/1065
Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def is_hansu(number):
if number >= 100: #100이상일 때만 체크
a = []
while(number != 0): # 각 자릿수 분리
a.append(number % 10)
number = number // 10
d = a[0] - a[1]
for i in range(len(a)-1):
if a[i]-a[i+1] == d: # 등차수열 체크
continue
else:
return 0
return 1
count=0
n = int(input())
for i in range(1, n+1):
if is_hansu(i):
count+=1
print(count)
Memo
한수인지를 체크해주는 함수를 정의하였다. 체크할 정수가 두자리수 이하인 경우(1~99) 항상 한수이기 때문에 100이상부터 체크하였다. 배열에 저장한 자리수를 for문을 돌며 비교하여 한수가 맞는 경우 1을 리턴하게 하였다.