ALGORITHM/PYTHON

백준 BAEKJOON 25371번 k진수 정수의 자릿수 나누기 [PYTHON/파이썬]

칼코
반응형

백준 BAEKJOON 25371번 k진수 정수의 자릿수 나누기 [PYTHON/파이썬]


<문제 출처>

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

 

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

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

www.acmicpc.net

<풀이>

 

파이썬 진수변환(2진법, 3진법, 5진법, 10진법)[n진법]

python에서는 기본적으로 int() 라는 함수를 지원한다int(string, base)2051104185276710진수로 변경이 가능하다.2, 8, 16진수는 bin(), oct(), hex() 함수를 지원한다.0b10110o130xb0b는 2진수, 0o는 8진수,

velog.io

위의 블로그를 참고하여 10진수에서 n진수로 변환하는 함수를 구현하였다.

그 다음에는 0으로 자른 문자열을 tmp에 저장하고 리스트(lst)에 저장하는 코드를 짰다. 

생각보다 복잡하게 코드가 짜였는데 좀 더 좋은 코드로 짜지 못해서 많이 아쉬웠던 문제였다.

 

<코드>

def convert(a, b) :
    base = ''

    while a > 0 :
        a, mod = divmod(a, b)
        base += str(mod)
    
    return base[::-1]

n, k = map(int, input().split())
nums = str(convert(n, k))

lst = []
tmp = ''
for i in nums :
    if i == '0' :	# '0'일 경우 tmp에 저장된 값을 lst에 저장 후 초기화
        lst.append(tmp)
        tmp = ''
        continue
    tmp += i
if len(tmp) > 0 :   # tmp 값에 값이 남아있을 경우 lst에 추가
    lst.append(tmp)

result = 0
for i in lst :
    if i.isdigit() :    # 문자의 숫자 판별
        result += int(i)

print(convert(result, k))
반응형