[python] 한수

백준 1065번

문제 설명

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

풀이

입력받은 수만큼 반복문을 돌려서 한수의 개수를 더해준다.
1~99까지는 세 자리수 미만이므로 무조건 한수로 해당되므로 무조건 +1씩 더해줌.
그 이상부터는 숫자를 문자열로 만들어 나눠주고 각 자리수의 차이가 같은지 판별한다.
입력받는 n의 최댓값이 1,000이므로 2번째자리까지만 체크하면 ㅇㅋ
그렇게 더해서 나온 값을 출력하면 된다.

제출 코드

n = int(input())

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

    return cnt

print(hansu(n))

좋은 웹페이지 즐겨찾기