본문 바로가기

BAEKJOON/Python3

백준 #1065: 함수

함수 - #1054: 한수  python3

 

#1065 link

 

1065번: 한수

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

www.acmicpc.net

문제


어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다.

등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다.

N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.

 

풀이


def gap(x, i) :           # i번째 자리와 그 다음 자리의 차이를 계산하는 함수
    return int(x[i]) - int(x[i+1])

def calc(n) :
    count = 0
    for x in range(1, n+1) :             # 1~n까지의 x
        x = str(x)
        judge = 0
        for j in range(len(x)-1) :       # len(x)-1은 gap()에서 그 다음 자리까지 계산하기 때문 
            if gap(x, 0) == gap(x, j) :  # 첫번째, 두번째 숫자와 gap이 j, j+1 자리의 gap을 비교
                judge += 1
        if judge == len(x)-1 :           # len(x)-1개의 judge가 쌓이면 등차수열이다.
            count += 1
    print(count)
    
n = int(input())
calc(n)

한수임을 증명하는 함수와

한수의 개수를 연산하는 함수를 혼용했습니다.

'BAEKJOON > Python3' 카테고리의 다른 글

백준 #11720: 숫자의 합  (0) 2020.08.19
백준 #11654: 아스키 코드  (0) 2020.08.19
백준 #4673: 셀프 넘버  (0) 2020.08.19
백준 #15596: 정수 N개의 합  (0) 2020.08.19
백준 #4344: 평균은 넘겠지  (0) 2020.08.03