3진법 뒤집기

최준근·2021년 9월 13일
0

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

2진법 - bin()
8진법 - oct()
16진법 - hex()
3가지의 경우는 내장함수로 진행이 가능하다.

3진법은 따로 코드를 구현해야 한다.

내 풀이
먼저, 문자열 형태의 ans를 선언하고
while반복문으로 n > 0 일때까지 반복시켜준다.
divmod(몫,나머지) 내장함수로 n과 res에 몫과 나머지를 저장하고
ans에 string 형태의 나머지를 더해주면
초기상태 ans -> ' '
ans에 나머지를 더한 상태 (n이 45라고 가정) '0' (45 나누기 3은 몫:15, 나머지 0)
한번더 반복 '00' (15 나누기 3은 몫:5 나머지 0)
이렇게 하다보면 ans는 앞뒤가 반전된 3진법으로 나오게된다.
return 값에 int(ans,3) << 3진법인 ans를 10진법으로 바꿔준다.

생각의 전환이 필요한 문제였다.

profile
느려도 좋으니 꾸준하게

0개의 댓글