본문 바로가기

알고리즘/python

[python/파이썬] 백준 1065 한수

반응형

[문제 출처]

https://www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net

 

[문제 풀이]

한수인지 아닌지 판단하는 함수를 작성하여 문제를 해결하였다.

10 미만의 숫자라면 무조건 한수이기 때문에 1을 반환하고 아닌 경우는 한수인지 아닌지 판단해야 한다.

10 이상일 경우 for문을 통해 i번째와 i+1번째의 차를 구하고

이전에 구한 차와 동일하지 않다면 0을 반환하여 반복문을 멈춘다.

 

n을 입력받고 1부터 n까지 한수인지 아닌지 확인하여 카운팅 한다.

def isHansoo(num):
    s = str(num)
    if len(s) == 1:
        return 1
    else:
        diff = int(s[0]) - int(s[1])
        for i in range(len(s)-1):
            if diff != (int(s[i]) - int(s[i+1])):
                return 0
        return 1

n = int(input())

cnt = 0
for i in range(1, n+1):
    if isHansoo(i) == 1:
        cnt += 1
        
print(cnt)
반응형