////
Search

한수

소스코드

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")
Python
복사

풀이

예시를 떠올리면서 생각해보면 if else의 분기 조건문을 금방 떠올릴 수 있습니다(출력 예시를 함께 보면서). 세자리수 이하에 대해서는 모두 한수로 취급하고 있습니다.
세자리 수부터는 N까지 순회하면서 100 ~ N 사이의 숫자들에 대해 한수인지 체크해야합니다. 인덱스0과 인덱스1의 차이를 구해 차이 판단 기준으로 설정합니다. 인덱스1부터 나머지 인덱스들에 대해서 인접한 값의 차이를 구하고 이를 pivot과 비교해 만약 한 부분이라도 등차를 이루지 않는다면 is_ok를 False로 바꿉니다. 만약 is_ok가 True를 유지하고 있다면 해당 숫자는 한수라는 소리이므로, result+1을 합니다.