241022 TIL

mj_data·2024년 10월 22일

TIL

목록 보기
22/32

알고리즘 코드카타

1.

문제

# 내 코드

def solution(n):
    answer = ''
    decimal = 0
    while n > 0:
        answer += str(n % 3)
        n //= 3
    answer = answer[::-1]
    for i in range(len(answer)):
        decimal += int(answer[i]) * (3 ** i)
    return decimal
# 남 코드

def solution(n):
    tmp = ''
    while n:
        tmp += str(n % 3)
        n = n // 3

    answer = int(tmp, 3)
    return answer

첫 번째로는 answer의 순서에 대해 헷갈렸었다. 분명 진법으로 변환하는 과정에서 실제 순서와 반대로 answer에 문자열로 삽입되기 때문에 어짜피 결과가 거꾸로 나와 answer[::-1]를 할 필요가 없지 않나 싶었다. 하지만 생각해보니 뒤에 for문으로 10진법으로 해석하는 부분에서 i의 사용법 때문에 맨 앞자리에 첫째자리가 오는 것이 편하기에 answer[::-1]가 필요했다.

그리고 int에 두번째 인수를 받아 진법이 해석 가능한 줄은 몰랐다. 이 발견 덕분에 위의 고민이 아주 무색해졌다.

0개의 댓글