본문 바로가기
알고리즘

백준 1065번: 한수 (python, 파이썬)

by 블쭌 2020. 10. 3.
728x90
  • 문제

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


  • 입력

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


  • 출력

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


  • 코드
def solution():
    num = int(input())

    cnt = 0
    # 값이 100미만이면 모든 수가 등차수열
    # If number under 100, all number is arithmetic sequence
    if num < 100:
        cnt = num
    # 값이 100초과라면 세 수가 등차수열일때 공식을 적용하면 된다
    # a, b, c가 있다면 가운데 수(b)의 2배가 양 끝의 수(a, c)의 합과 같다.
    # If number is over 100, apply arithmetic sequence formula
    # example a, b, c -> 2*b = a+c
    else:
        # 기본 숫자
        # default number
        cnt = 99
        for i in range(100, num+1):
            a = i // 100
            b = i // 10 % 10
            c = i % 10
            if 2 * b == a + c:
                cnt += 1

    print(cnt)

solution()

  • 출처

www.acmicpc.net/problem/1065

728x90

댓글