2️⃣ 알고리즘
더보기
1. while문에서 3진법으로 n을 바꿔준다. 이때 이미 뒤집힌 형태로 나오므로, 다시 뒤집어줄 필요가 없다.
이후 for문을 통해 자릿수에 맞게 곱해서 답에 더해주었다.
def solution(n):
a = n
b = []
while a >= 1:
b.append(a % 3)
a = a // 3
answer = 0
for i in range(len(b)):
answer += b[i] * (3 ** (len(b) - i - 1))
return answer
2. 재귀함수를 사용한 방법
# 재귀함수로 3진법 > 10진법 후 리버스
def dec_to_tri_reversed(number,str_tri=''):
if number==0: return str_tri
return dec_to_tri_reversed(number//3,str_tri+str(number%3))
# 재귀함수로 3진법 > 10진법
def tri_to_dec(str_tri, number=0,idx=0):
if idx==len(str_tri): return number
return tri_to_dec(str_tri, number+(3**idx)*int(str_tri[len(str_tri)-idx-1]),idx+1)
# 제출용 함수
def solution(n):
answer = tri_to_dec(dec_to_tri_reversed(n), number=0,idx=0)
return answer
3. divmod 사용하는 방법
def solution(n):
reverse_base3 = ''
while n > 0:
n, r = divmod(n, 3)
reverse_base3 += str(r)
answer = int(reverse_base3, 3)
return answer
3️⃣ divmod(a, b)
나눗셈의 몫과 나머지를 한번에(!) 구해주는 함수
//와 %를 동시에 해준다고 생각하면 된다.
a = 9
b = 2
print(a//b, a%b)
# 4 1
print(divmod(a, b))
# (4, 1)
첫번째 숫자를 두번째 숫자로 나눈 몫과 나머지를 튜플(tuple) 형태로 반환
'WIL&TIL > TIL' 카테고리의 다른 글
20230428 TIL - 공식문서 읽기, 알고리즘 (0) | 2023.04.30 |
---|---|
20230427 TIL - 장고 프로젝트 세팅, 알고리즘 (0) | 2023.04.27 |
20230425 TIL - dotenv오류, 알고리즘 (0) | 2023.04.25 |
20230424 TIL - 알고리즘 (4) | 2023.04.24 |
20230421 TIL - Customizing token claims, 알고리즘 (0) | 2023.04.21 |
댓글