incastle의 콩나물

[알고리즘] 백준 1065번, 한수, 함수 만들기, python(9) 본문

python/알고리즘

[알고리즘] 백준 1065번, 한수, 함수 만들기, python(9)

incastle 2019. 4. 11. 01:07

문제 

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

max_number = int(input())
# 한수를 확인할 max_number

count = 0
# 한수 count

for number in range(1,max_number+1):
# max_number 아래로 하나씩 접근

    num_list=list(str(number))
    gap = []
    # 등차수열 gap 확인
    
    if len(num_list) == 1 or len(num_list) == 2:
        count += 1
        # 일의 자리, 십의 자리는 모두 한수
       
    else:
        for i in range(0,len(num_list)-1):
            gap.append(int(num_list[i])-int(num_list[i+1]))
            # 그 외는 차이를 확인
            
        if gap.count(gap[0]) == len(gap):
            count += 1
            # gap의 첫 번째 원소가 gap list에 몇 번 있는지 체크, 그 숫자가 gap의 크기와 동일하면 count
print(count)
        
        
Comments