728x90
안녕하세요 뚜디 입니다 :)
코딩테스트 연습 - 3진법 뒤집기 | 프로그래머스 (programmers.co.kr)
< 프로그래머스 - 3진법 뒤집기 (LV1) >
1. 연습 문제
2. 문제 풀이
3. 소스 코드
4. 결과
1. 연습 문제
- 문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
- 제한 조건
n은 1 이상 100,000,000 이하인 자연수입니다.
- 입출력 예
n | result |
45 | 7 |
125 | 229 |
2. 문제 풀이
입출력 예 #1
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
45 | 1200 | 0021 | 7 |
입출력 예 #2
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
125 | 11122 | 22111 | 229 |
1. 가장 먼저 10진법 -> 3진법으로 변경시 3^a의 a(max)값을 찾는다.
2. 반복문을 통해 입력받은 n의 크기를 줄여나가며 10진법 -> 3진법으로 변경한다.
3. 3진법 -> 10진법으로 변경하는 반복문을 통해 리턴한다.
3. 소스 코드
def solution(n):
answer = 0
count = 0
max = 0
temp = []
for i in range(n):
if (n < 3**i):
max = i - 1
break;
while (max >= 0):
if (n - 3**max >= 0):
count += 1
n -= 3 ** max
if (n - 3 ** max >= 0):
continue
else:
temp.append(count)
count = 0
max -= 1
for i in range(len(temp)):
answer += temp[i] * 3**i
return answer
4. 결과
728x90
'Programmers > Python' 카테고리의 다른 글
[Python] 프로그래머스 :: 폰켓몬 (0) | 2021.10.07 |
---|---|
[Python] 프로그래머스 :: 약수의 개수와 덧셈 (0) | 2021.10.07 |
[Python] 프로그래머스 :: 예산 (0) | 2021.10.06 |
[Python] 프로그래머스 :: 두 개 뽑아서 더하기 (0) | 2021.10.06 |
[Python] 프로그래머스 :: 2016년 (0) | 2021.10.06 |