백준 1065 한수 파이썬

최대 1 분 소요

백준 1065번 한수 풀이

접근방식

  1. 한수의 특징에 따라, n이 100보다 작은 자연수라면 모두 한수이다.
  2. 100보다 클 경우 각 자리수의 차가 같다면 한수로 인정한다.
import sys

input = lambda: sys.stdin.readline().rstrip()

n = int(input())

# 한수 개수를 기본적으로 99 개로 설정했다.
cnt = 99

# n이 100보다 작은 자연수라면 모두 한수이므로 cnt = n으로 해준다.
if n <= 99:
    cnt = n
    
# 100보다 큰 경우, 첫째자리 - 둘째자리, 둘째자리 - 셋째자리 를 비교한다.    
else:
    for i in range(100, n+1):
        if (int(str(i)[0]) - int(str(i)[1])) == (int(str(i)[1]) - int(str(i)[2])):
            cnt += 1
        else:
            continue
print(cnt)

해당 문제는 실버4레벨에 해당하므로 어렵지 않게 풀 수 있는 문제였습니다.

또한 문제 조건이 1000보다 작거나 같은 자연수였기 때문에 각 자리수의 차가 등차수열을 이루는지 판별하기 쉬웠습니다.

하지만, 그보다 커진다면 이것을 for문으로 구현하는 것에 조금 더 난이도가 올라갈 것입니다.

알고리즘도 모든 것과 마찬가지로 꾸준한 연습과 이해를 바탕으로 실력이 향상합니다.

Just do it & Keep steady

댓글남기기