개발/algorithm

[백준 1065번] 한수 -python

zzi_on2 2022. 1. 29. 18:48

문제 링크

https://www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net

풀이

- N은 1000보다 작거나 같은 자연수이므로 완전 탐색 고려 

- N이 한자리 수거나 두자리수면 모두 한수이므로 count += 1

- 네자리 수는 1000 밖에 없는데 1000은 한수가 아님

- 따라서 세자리 수만 고려 : 연속된 숫자들의 차 비교해서 같으면 count += 1

- 시작 숫자인 start를 1씩 증가 시켜주면서 N보다 작거나 같은 모든 숫자에 대해서 검사 

n = int(input())

start = 1
count = 0

while True:
  
  if start > n :
    break
  
  tmp = str(start)

  if len(tmp) < 3:
      count += 1
  else :
    if int(tmp[2])-int(tmp[1]) == int(tmp[1]) - int(tmp[0]):
      count += 1 

  start += 1 

print(count)