[알고리즘] BOJ 1065 한수

김상현·2022년 2월 26일
0

알고리즘

목록 보기
37/301
post-thumbnail

[BOJ] 1065 한수 바로가기

📍 문제

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


📍 입력

첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.


📍 출력

첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.


📍 풀이

  • 1~99까지의 수는 모드 한수입니다.
  • 100~999의 수를 모두 자릿수로 나누어 자릿수별 차이가 같은 값을 갖는지 확인합니다.
  • 만약 같은 값을 가질 경우 이전 한수의 갯수에서 +1을 합니다.

✍ 코드

from sys import stdin

result = [0] + [i for i in range(1,100)]
for i in range(100,1001):
  tmp = list(map(int,str(i)))
  if(tmp[0]-tmp[1] == tmp[1]-tmp[2]): # 현재의 값이 등차수열인지 확인
    result.append(result[-1]+1)
  else:
    result.append(result[-1])
N = int(stdin.readline())
print(result[N])
profile
목적 있는 글쓰기

0개의 댓글