목차
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[ 풀이과정 (로직) ]
- 3진법으로 변경 후, 리스트에 추가 -> 10진법으로 변경한다
- 3진법으로 변경시, n을 3으로 나누고 난 나머지를 리스트에 추가
- 가장 나중에 나온 값이 리스트의 0번째 값이 되므로, reverse를 해줄 필요는 없겠다
[ Solution 1 ]
def solution(n):
result , target = 0, 3
lst = []
# 3진법 구화기
while(n):
lst.append( n%target )
n = n//3
# 10 진법으로 변경
for i in range(len(lst)):
result += (lst[i] * pow( target , len(lst)-i-1 ) )
return result
[ Solution 2 ] - The better solution
def solution(n):
lst = []
while n:
#append
lst += str(n%3)
n = n//3
return int( "".join(lst), 3 )
[새롭게 알게 된 점]
1. 아래와 같은 방식으로도 int 와 str을 사용할 수 있다
str('숫자 혹은 문자로 이루어진 문자열',해당 진법)
int('숫자 혹은 문자로 이루어진 문자열',해당 진법)
# ex .
# 10을 3진법으로 변경 & int형 자료형
int ( 10, 3)
2. 리스트에 append가 아닌 +=를 이용해서도 요소값을 추가 할 수 있다
n = 45
while n:
lst += str(n%3)
n = n//3
# lst = [0,0,2,1]
'ALGORITHMS > SOLUTION' 카테고리의 다른 글
[프로그래머스:PYTHON] 공던지기 (0) | 2023.05.24 |
---|---|
[프로그래머스: PYTHON] 배열회전시키기 (0) | 2023.05.24 |
[백준:JAVA] 단어수학 (0) | 2023.05.23 |
[백준:PYTHON] 단어 수학 (0) | 2023.05.23 |
[백준] 1004_어린왕자 (0) | 2023.02.20 |