문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
def solution(n):
a= []
answer= 0
while True:
b = n % 3
n = n // 3
a.append(b)
if n < 3:
a.append(n)
break
if len(a)<3:
a.remove(0)
c=a[::-1]
for i in range(len(c)):
answer += (3**i)*c[i]
return answer
진짜 어거지로 풀었다 여기서 사용한 while문 무한루프
그리고 멈추기위한 break
그리고 특정 조건일때 배열 a의 길이가 3보다 작을 때 문제를 제외하기 위해서 저걸 설정해두었다.
10진수의 수를 n 진법으로 만들때 공식을 생각하고 나머지를 중심으로 풀었다.
이 문제는 다양한 풀이가 존재했다.
다른 사람 풀이중
문자열과 n 진법 바꾸기를 사용했다.
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
answer = int(tmp, 3)
return answer
int의 사용법중 n 진법으로 바꾸는 기능이 있다.
security-nanglam.tistory.com/508
[Python] 진법 변환 총 정리?!
[Pyhton 진법 변환] n진수 → 10진수 python에서는 기본적으로 int() 라는 함수를 지원합니다. int(string, base) 위와 같은 형식으로 사용하면 됩니다. base에는 진법을 넣으면 됩니다. print(int('111',2)) pr..
security-nanglam.tistory.com
반응형
'코딩 > 프로그래머스 lv1' 카테고리의 다른 글
완주하지 못한 선수 (0) | 2021.04.10 |
---|---|
예산 - 파이썬 (그리디) (0) | 2021.04.10 |
[프로그래머스] 콜라츠 추측 - 파이썬 (0) | 2021.04.10 |
시저 암호 (0) | 2021.04.10 |
서울에서 김서방 찾기 -파이썬 (0) | 2021.04.09 |