STUDY 📖/코딩 테스트

[백준] 1065번_한수

힘히힘 2022. 4. 8. 00:10
반응형

Day5. 한수 - 1065번

220406 수요일

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

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

<입력>
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. <출력> 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.

image

사실 문제 이해가 좀 안되서 찾아봤다. + 코드도 좀 서칭함 ㅜ\_ㅜ 한수란, 각 숫자의 위치에 있는 수가 (백의 자리, 십의 자리, 일의 자리) 등차수열을 이루는 것을 의미한다.

  • 십의 자리수는 전부 한수임!
  • 1000자리를 고민하였는데 입력값 1000이하이므로 (1000은 한수 고려 X), 백의 자리까지 생각함. num_list=list(map(int,str(i))) 사용하여 i을 문자열로 바꿨다가 int로 변환하여 리스트에 넣어줌 -> 자리 수 보기 위함.
num=int(input())
han=0

for i in range(1, num+1):
    if i <100:
        han+=1
    else:
        num_list=list(map(int,str(i)))
        if num_list[0]-num_list[1]==num_list[1]-num_list[2]:
            han+=1

print(han)