본문 바로가기
Algorithms/코테 문풀

백준[1065번] 한수 문풀 - Python

by hi-rachel 2022. 11. 3.
문제

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

 

입력

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

 

출력

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

 

문제 풀이
n = int(input())

cnt = 0
for i in range(1, n+1):
  num_list = list(map(int, str(i)))
  if i < 100:
    cnt += 1
  elif num_list[0]-num_list[1] == num_list[1]-num_list[2]:
    cnt += 1
print(cnt)

한수는 1보다 크므로 range(1, n+1)로 반복문의 범위를 정해주고,

n의 각 자릿수를 문자열 str(i)로 변환시켜 리스트로 넣어준다.

15를 입력해주고 print(num_list)한 모습

 

✏️ 100 이하는 모두 한수이다 => (참고)

1~9: 길이가 1인 등차수열

10~99: 길이가 2이고 공차는 양수 또는 음수인 등차수열

 

✏️ 100 이상부터는 각 자리 수의 차가 똑같은 등차이면 개수를 추가해준다.

ex_ 137 => 한수 x, 135(길이가 3이고, 공차가 2인 등차수열)

 

 

문제 출처

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

 

1065번: 한수

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

www.acmicpc.net