NY's 개발일기
[프로그래머스] 3진법 뒤집기 - Python 본문
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
n | result |
45 | 7 |
125 | 229 |
즉,
n (10진법) | n (3진법) | 앞뒤 반전 (3진법) | 10진법으로 표현 |
45 | 1200 | 0021 | 7 |
다음과 같은 순서로 답을 도출해내는 문제입니다.
필자의 경우, 해당 문제를 조금 복잡하게 풀었는데
해당 문제를 간단하게 풀어낸 좋은 코드를 발견하여 이를 기록하고자 합니다.
def solution(n):
answer = 0
arr = []
while True:
arr.append(str(n % 3))
n = n//3
if n == 0:
break
answer = ''.join(arr)
answer = int(answer, 3)
return answer
print(solution(45))
먼저, while문의 경우 10진법으로 표현된 n을 3진법으로 변환해주는 코드인데
먼저 나온 나머지 값부터 arr 리스트에 순서대로 넣어주기 때문에
앞뒤 반전된 3진법 값이 arr 리스트에 들어가게 됩니다.
int(answer, 3)의 경우 해당 값을 10진법으로 변환해주는 코드입니다.
'Study > Algorithm' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭 - JavaScript (0) | 2022.01.11 |
---|---|
[백준] 촌수계산(2644번) - C++ (0) | 2021.04.20 |
[백준] 바이러스(2606번) - C++ (0) | 2021.04.20 |
[백준] 스택(10828번) - C++ (0) | 2021.04.17 |
[백준] 큐(10845번) - C++ (0) | 2021.04.17 |