본문 바로가기

알고리즘/백준 문제 풀이

[Python] 25371번 k진수 정수의 자릿수 나누기

728x90

25371번: k진수 정수의 자릿수 나누기 (acmicpc.net)

 

25371번: k진수 정수의 자릿수 나누기

양의 정수 n과 k가 주어진다. n을 k진수로 변환한 수를 a라고 하자. a의 각 자릿수를 0을 기준으로 나눈 결과를 집합 b라고 하자. 0이 연속으로 나와서 공백이 생기는 경우는 집합 b에 포함되지 않는

www.acmicpc.net


 

22/09/09

 

 

정직한 제목, 정직한 문제이다. 제목과 걸맞게 잘 구현하면 되는 문제이다.


 

문제 접근 방식:

 

 

10진법으로 입력받은 숫자를 k진법으로 변환시켜주는 함수를 정의했다.

 

이 함수는 너무나도 잘 알려져 있고, 진법에 관한 지식이 있다면 충분히 구성할 수 있기 때문에 설명하지 않겠다.

 

그냥 그 함수와 파이썬의 sum함수, 그리고 '0'을 기준으로 분리하는 split메서드를 활용하여 문제를 쉽게 풀 수 있었다.

 


아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.

더보기
# 25371번 k진수 정수의 자릿수 나누기
# 수학, 구현, 정수론
n, k = map(int, input().split())
def k_notation(n, k):
    string = ''
    while True:
        if n < k:
            string += str(n)
            break
        string += str(n % k)
        n //= k
    return string[::-1]

print(k_notation(sum([int(i) for i in k_notation(n, k).split('0') if i != '']), k))