첫 번째 답안

: 리스트에 값을 넣을 때 insert로 넣어서 reverse하지 않고도 값을 쓸 수 있게 함. enumerate를 알고도 쓰지 못했는데 드디어 써 봄. 근데 첨에 값을 두 개(idx, x) 받게 써 놓고도 enumerate쓰지 않고 li만 써서 오류가 났었음. 인덱스와 값을 함께 받을 땐 enumerate 꼭 기억하자.

def solution(n):
    base = 3
    li = []
    while True:
        if n < base:
            li.insert(0, n)
            break
        else:
            li.insert(0, n % base)
            n = n // base
    answer = sum([x * (base ** idx) for idx, x in enumerate(li)])

    return answer

두 번째 답안

: 다른 사람의 답을 보고 divmod로 몫과 나머지를 함께 받는 방법을 배움. 그리고 다시금 join과 map을 쓸 수 있다는 것을 배움. 문자열은 join으로 합칠 수 있고, 이 문자열을 int(문자열, 진수)와 같이 넣으면 자동으로 해당 진수에 따라 값이 계산된다. 

def solution(n):
    base = 3
    li = []

    while n > 0:
        n, rest = divmod(n, base)
        li.append(rest)

    li = ''.join(map(str, li))
    answer = int(li, base)

    return answer

 

배울 점

: 이미 한 번 다른 사람의 코드를 봐서 아는 것들도 실제로 내가 떠올려서 쓸 수 없으면 무용지물이다. 코드를 배운 뒤에는 공부한 코드를 덮어두고 다시 처음부터 시작하는 마음으로 코드를 짜 봐야 한다. 그래야 배웠던 것을 떠올려서 스스로 쓸 수 있게 될 거다.

 

+ Recent posts