백준 1065 python

1168 단어 pythonpython

백준 1065

한수

문제

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

입력

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

출력

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

예제

110 -> 99
1 -> 1
210 -> 105
1000 -> 144
500 -> 119

코드

def solution(number):
    if 0<=number<100:
        return number
    else:
        count=99
        for i in range(100,number+1):
            if i ==1000:
                break
            a=int(i/100)
            b=int((i%100)/10)
            c=int(i%10)
            if (a-b)==(b-c) :
                count+=1

        return count

number=int(input())

print(solution(number))

한수는 0 ~ 99 즉 한자리와 두자리는 모두 한수이기 때문에 포함된다. (이유는 비교할 뒷대상이 없기때문)
따라서 100 이상부터 고려해야만한다.
따라서 아닌경우 해당경우를 나누고 1000이하이기때문에 1000일겨우 어짜피 한수도아니고 그냥 깨버리게끔 if문을 썼고 맨 앞자리 가운데 뒷자리를 만들고 앞뒤의 차이가 같을때만 카운트를 해준다.

좋은 웹페이지 즐겨찾기