3진법_프로그래머스_파이썬
3진법
- 사전지식
- np.zeros
- // 몫구하기
- ** 제곱
- %나머지
- while
- np.zeros: 0으로 만들어진 리스트를 반환
np.zeros(shape=(5,),dtype=np.int8)
array([0, 0, 0, 0, 0], dtype=int8)
- // 몫구하기
5//2
2
1//2
0
- ** 제곱
3**2
9
- %나머지
3%2
1
1%4
1
- while: 조건을 만족하지 않을 때 까지 수행합니다.
n = 5
sum_ = 0
while n>1:
sum_+=n
n-=1
print(sum_)
14
5부터 2까지만 더해지는 것을 볼 수 있습니다.
def solution(n):
answer = 0
y = 0
for i in range(17,-1,-1):
if n//(3**i) >= 1:
y = i
break
thr = np.zeros(shape=(y+1,),dtype=np.int8)
for j in range(y, -1, -1):
if n//(3**j) >=1 :
thr[j] = n//(3**j)
n = n - (n//(3**j))*(3**j)
elif n//(3**j) == 0 :
thr[j] = 0
for k in range(len(thr)) :
answer += thr[k]*(3**(len(thr)-1-k))
return answer
- 다른 사람 풀이
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
print(tmp)
answer = int(tmp, 3)
return answer
Comments