티스토리 뷰

728x90

프로그래머스 코딩 테스트 3진법 뒤집기를 풀어보겠습니다!

 

최종 결과
1
2
3
4
5
6
7
8
9
10
def solution(n):
    conversion = '';
    while True:
        conversion = str(n%3+ conversion
        n = n//3
        if n==0: break
    answer = 0;
    for i in range(len(conversion)):
        answer += int(conversion[i]) * 3**i
    return answer

 

 

 

풀이

 

문제설명

자연수 n이 매개변수로 주어집니다.

n을 3진법 상에서 앞뒤로 뒤집은 후,

이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

 

10진수 n을 3진수로 바꿈 → 바뀐 3진수를 뒤집음 → 다시 10진수로 바꿔서 return

 

 

 

1. 10진수n을 3진수로 바꾸기

진법을 바꾸는 알고리즘은 다음에 다시 글을 쓰도록 하겠습니만,

간단하게 알고 싶으시다면 아래 '더보기'를 눌러주세요.

더보기
10진수를 n진수로 변환 한다면, (n>1)

바꾸고자 하는 10진수를 n으로 몫이 0이 될 때 까지 나눠주고,

나머지를 아래 방향부터 읽어주면 됩니다.

 

따라서 아래 코드로 10진수 n이 3진수로 바꿔지는걸 확인할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
= 45
conversion = ''
while True:
    conversion = str(n%3+ conversion 
    n = n//3 
    if n==0: break # 나머지가 0이 되면 반복문 종료
 
print(conversion)
 
# 결괏값: 1200

 

 

 

2. 3진수 역순의 불필요성과 최종 10진수 변환

저희가 최종적으로 하고자 하는 것은, 10진수를 출력 하는 것입니다.

그럼 굳이 바꾼 1번에서 바꾼 3진수를 역순할 필요가 없음을 알 수 있습니다.

다시 10진수로 바꿀 때 이를 고려하고 계산해주면 되기 때문 입니다.

 

3진수를 10진수로 바꾸려면 3진수 각 자리에 3^(n번째 자리수)를 해 주시면 됩니다.

1
2
for i in range(len(conversion)):
    answer += int(conversion[i]) * 3**i

 

 

 

더보기

프로그래머스, 코딩 테스트, 알고리즘, 3진수, 진법, 변환, python, 파이썬, Python, 뒤집기, 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함