https://school.programmers.co.kr/learn/courses/30/lessons/68935
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
code
# Lv.1
# 3진법 뒤집기
def solution(n):
answer_3 = ''
temp = n
while temp > 0:
answer_3 += str(temp % 3)
temp = temp // 3
answer_10 = 0
for i in range(1, len(answer_3) + 1):
answer_10 += int(answer_3[-i]) * (3 ** (i - 1))
return answer_10
알고리즘
answer_3 = ''
temp = n
while temp > 0:
answer_3 += str(temp % 3)
temp = temp // 3
위 코드를 통해 삼진법으로 변환하고 앞뒤를 바꾼 값은 answer_3에 저장한다. 0과 같은 정보를 살리고자 문자열을 이용했고, 문제에서 요구하는 3진법 변환 후 뒤집기를 한 번에 실행했다.
answer_10 = 0
for i in range(1, len(answer_3) + 1):
answer_10 += int(answer_3[-i]) * (3 ** (i - 1))
그리고 10진법으로 표현하고자 문자열의 글자 하나하나를 3의 제곱수와 곱해서 answer_10에 더했다.
피드백
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
answer = int(tmp, 3)
return answer
다른 사람의 풀이 중 하나로, int를 활용해 십진법으로 훨씬 간단하게 풀은 방법도 있다.
'Python 알고리즘 공부 > 프로그래머스 코딩테스트 연습' 카테고리의 다른 글
| 키패드 누르기 (python) (0) | 2023.08.03 |
|---|---|
| 두 개 뽑아서 더하기 (0) | 2023.08.02 |
| 내적 (python) (0) | 2023.08.02 |
| 로또의 최고 순위와 최저 순위 (0) | 2023.08.01 |
| 약수의 개수와 덧셈 (python) (0) | 2023.08.01 |
댓글