기록
[Python] 3진법 뒤집기 본문
반응형
programmers.co.kr/learn/courses/30/lessons/68935
문제의 요구사항은 매개변수로 받아온 10진수를 3진법으로 변환 후, 그 3진법을 뒤집어서 다시 10진법으로 바꾸는 것입니다.
그런데 3진법 기준 끝 숫자부터 list에 저장됨으로 굳이 뒤집을 필요는 없겠습니다.
[ 내장함수를 활용한 풀이 ]
def solution(n):
answer = ''
while n >= 1:
n, rest = divmod(n, 3)
answer += str(rest)
answer = int(answer, 3)
return answer
1) divmod() : 몫과 나머지를 같이 반환해주는 함수
2) int(x, base) : base 진법으로 구성된 str 형식의 수를 10진법으로 변환해 줌
python의 int 함수는 진법 변환을 지원합니다.
[ 로직을 코딩한 풀이 ]
def solution(n):
answer = ''
result = 0
while n >= 1:
rest = n % 3
n //= 3
answer += str(rest)
i = 0
for idx in range(len(answer)-1, -1, -1):
result += int(answer[idx]) * (3**i)
i += 1
return result
수기로 진법 변환을 할 수 있으면 어렵지 않게 구현할 수 있습니다.
[다른 풀이 참고]
def solution(n):
answer = []
while True:
n, rest = divmod(n, 3)
answer.append(rest)
if n == 0:
break
return sum([i * 3**idx for idx, i in enumerate(reversed(answer))])
list에 int형 숫자를 하나씩 저장해서 풀었네요.
이상 3진법 뒤집기 문제풀이였습니다.
반응형
'[Study] > 코딩테스트 연습' 카테고리의 다른 글
[Python] 실패율 (0) | 2020.11.09 |
---|---|
[Python] 크레인 인형뽑기 게임 (0) | 2020.11.08 |
[Python] 비밀지도 (0) | 2020.11.07 |
[Python] 다트 게임 (0) | 2020.11.07 |
[JAVA] 백준 11053 가장 긴 증가하는 부분 수열 (0) | 2020.10.10 |