소스코드

import sys
input = sys.stdin.readline

N = int(input().strip())
result = 0

if N <= 99:
	# 세자리수 이하면 해당 숫자가 답
	result = N
else:
	result = 99	
	
	for n in range(100, N+1):
		is_ok = True
		string_n = str(n)
		pivot = int(string_n[0]) - int(string_n[1])
		
		for i in range(1, len(string_n)-1):
			term = int(string_n[i]) - int(string_n[i+1])
			
			if term != pivot:
				is_ok = False
				break
		
		if is_ok == True:
			result += 1
	
sys.stdout.write(f"{result}\\n")

풀이

예시를 떠올리면서 생각해보면 if else의 분기 조건문을 금방 떠올릴 수 있습니다(출력 예시를 함께 보면서). 세자리수 이하에 대해서는 모두 한수로 취급하고 있습니다.

세자리 수부터는 N까지 순회하면서 100 ~ N 사이의 숫자들에 대해 한수인지 체크해야합니다. 인덱스0과 인덱스1의 차이를 구해 차이 판단 기준으로 설정합니다. 인덱스1부터 나머지 인덱스들에 대해서 인접한 값의 차이를 구하고 이를 pivot과 비교해 만약 한 부분이라도 등차를 이루지 않는다면 is_ok를 False로 바꿉니다. 만약 is_ok가 True를 유지하고 있다면 해당 숫자는 한수라는 소리이므로, result+1을 합니다.