[백준 알고리즘]1065번 "한수"

LEE EUN JIN·2021년 8월 20일
post-thumbnail

[백준 알고리즘]1065번 "한수"

문제

백준 1065번

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

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

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

문제 풀이

  1. 등비수열을 check하는 함수(check_common_difference)를 만든다.
    입력받은 숫자를 문자열로 변환해서 index+1 와 index의 차이를 len(n)-1 번만큼 계산한 후, 첫 등비 값과 나중에 등비 값이 같은지 다른지 판별한다. 만약 바로 다름이 판별날 경우, return 한다.
  2. 1부터 input 된 N까지 check_common_difference함수를 실행한다.
def check_common_difference(n):
    if n < 100:
        result = True
        return result

    n = str(n)
    diff = int(n[1]) - int(n[0])

    for i in range(1, len(n)-1):
        next_diff = int(n[i+1]) - int(n[i])
        if diff == next_diff:
            result = True
        else:
            result = False
            return result
    return result


a = int(input())
count = 0
for j in range(1, a+1):
    if check_common_difference(j) is True:
        count += 1

print(count)


0개의 댓글