STUDY/Algorithm

[백준코딩_파이썬] 1065번_한수 개수 구하기

ez1n 2022. 3. 9. 05:06

[Python_한수]

 

한수의 갯수 출력하기

 


 

<STUDY>

 

한수

 

   - 각 자리가 등차수열을 이루는 수.

 

 

📢 문제 📢

 

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

 

 

❗아이디어

  

   - 한수 구하는 함수 정의 : 모든 수가 등차수열인지 확인하기 위해서 첫 번쨰, 두 번째 숫자의 등차수열 식을 구한 후 나머지 값이 그에 맞는지 확인한다.

   - 정의한 함수로 N이하의 값을 출력한다.

 

1. 한수 구하는 함수 정의하기

# 한수 구하는 함수 정의

def h(x):
    if x < 10: 
        return x
    else:
        a = str(x)
        d = int(a[1]) - int(a[0]) # 공차
        number = ""
        for n in range(len(a)):  # 등차 수열 확인
            if int(a[n]) == int(a[0]) + n * d: 
                number += a[n]

        if x == int(number): return x

 

   - 각 자리수가 등차수열을 이루는지 확인하기 위해 등차수열 구하는 식을 먼저 정의한다.

   - 각 자리 수가 식에 대입한 값과 일치하면 number에 추가한다.

   - 원래 숫자와 number이 일치하는지 확인한다.

 

2. 개수 구하기

N = int(input())
li = []
for i in range(1, N + 1):
    if type(h(i)) == int:  # 한수가 아닌 값은 "None"으로 나오기 때문에 자료형이 정수인 요소만 추가
        li.append(h(i))
print(len(li))

 

   - 정수 N을 input()으로 받은 후 int를 사용하여 정수로 변환.

   - 빈 리스트(li)를 만들고 N이하인 한수를 append한다.

   - 위에서 정의한 함수(h)를 사용하여 N보다 큰 수는 "None"으로 출력되므로 자료형이 정수인 것만 추가한다.

 


🔆백준 코딩 1065번🔆

 

👉ez1n github 구경하기👈

 

 

ez1n - Overview

Study -ing. ez1n has 5 repositories available. Follow their code on GitHub.

github.com