첫 번째 답안
: 리스트에 값을 넣을 때 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
배울 점
: 이미 한 번 다른 사람의 코드를 봐서 아는 것들도 실제로 내가 떠올려서 쓸 수 없으면 무용지물이다. 코드를 배운 뒤에는 공부한 코드를 덮어두고 다시 처음부터 시작하는 마음으로 코드를 짜 봐야 한다. 그래야 배웠던 것을 떠올려서 스스로 쓸 수 있게 될 거다.
'코딩 기록장' 카테고리의 다른 글
자바스크립트 - 백준 코드 13277번 문제 풀이 : 큰 수의 곱 (0) | 2020.12.03 |
---|---|
python 3 : 프로그래머스 Level. 1 가운데 글자 가져오기 (0) | 2020.11.06 |
python 3 : 프로그래머스 Level. 1 2016년 (0) | 2020.11.06 |
python 3 : 프로그래머스 Level. 1 K번째 수 (0) | 2020.11.06 |
python 3 : 프로그래머스 Level. 1 체육복 (0) | 2020.11.06 |