728x90
최근에 면접 준비하느라 포스팅을 못했는데
면접이 끝나서 오늘 일어나자마자 푼 문제를 포스팅 해보려구 합니다!
오늘 푼 문제는 3진법 뒤집기!
문제 설명 & 제한 사항 & 입출력 예시
풀이
이번 문제는 담백 그 자체!
사실 어렵지 않다.
10진법 -> 3진법 -> 역순 -> 10진법
위에 조건처럼 구현해주면 되는데 여기서 리스트를 이용하면 역순부분을 사용하지 않아도 된다.
즉! 10진법 -> 3진법 -> 10진법
바로 코드를 보도록 하자!
# 첫번째 코드
def solution(n):
result = []
count = n
while count > 0:
tmp = count % 3
result.append(tmp)
count = int(count / 3)
i, check = -1, 0
answer = 0
while check < len(result):
if check == 0:
answer += (result[i]) * 1
i -= 1
check += 1
elif result[i] == 0:
i -= 1
check += 1
continue
else:
answer += (result[i] * (3 ** check))
i -= 1
check += 1
return answer
먼저 첫번 째 while문에서는 3진법으로 변환시켜준다.
두번째 while에서는 10진수로 변환해주는데
이 과정에서 현재는 check를 이용했지만 굳이 이렇게 안해도 된다.
check라고 사용한 건 3의 check승, 즉 제곱을 위한 값
실제로 check가 0일 때 조건을 주지 않고 그냥 제곱근을 해도 무관할 것이다.
그렇게 된다면 코드가 더 간결해진다.
# 최종 코드
def solution(n):
result = []
count = n
while count > 0:
tmp = count % 3
result.append(tmp)
count = int(count / 3)
i, check = -1, 0
answer = 0
while check < len(result):
answer += (result[i] * (3 ** check))
i -= 1
check += 1
return answer
위에 코드처럼 작성하면 역순으로 제곱근 값을 확인할 수 있다.
끄읕!
최근 면접보느라 정신이 없어서 포스팅을 자주 못했지만
좀 더 좋은 포스팅으로 찾아오겠습니다.
728x90
'Algorithm > 프로그래머스' 카테고리의 다른 글
세무민의 알고가자 : 프로그래머스 문자열 다루기 기본 문제 풀기 (4) | 2021.03.07 |
---|---|
세무민의 알고가자 : 프로그래머스 같은 숫자는 싫어 문제 풀기 [부제 : for와 while의 시간 차이] (2) | 2021.03.05 |
세무민의 알고가자 : 프로그래머스 문자열 내 마음대로 정렬하기 문제 풀이 (0) | 2021.02.28 |
세무민의 알고가자 : 프로그래머스 이상한 문자 만들기 문제 풀기 (2) | 2021.02.27 |
세무민의 알고가자 : 프로그래머스 폰켓몬 문제 풀기 (2) | 2021.02.26 |