https://school.programmers.co.kr/learn/courses/30/lessons/68935
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예nresult
45 | 7 |
125 | 229 |
입출력 예 설명
입출력 예 #1
- 답을 도출하는 과정은 다음과 같습니다.
45 | 1200 | 0021 | 7 |
- 따라서 7을 return 해야 합니다.
입출력 예 #2
- 답을 도출하는 과정은 다음과 같습니다.
125 | 11122 | 22111 | 229 |
- 따라서 229를 return 해야 합니다.
문제 이해
- 문제에서 주어진 과정에 따라 3진법 변환, 역순 정렬, 10진법 변환을 연속으로 진행합니다.
- 이때 주의해야할 점은 숫자 1,2 같은 경우 3진법으로 변환해도 1,2이기 때문에 해당 과정을 거치지 않고 바로 리턴해야합니다.
- 이외의 경우엔 아래의 그림처럼 배열을 3진법 변환 결과 배열을 생성해주면 됩니다.
- 기존의 진법 변환 같은 경우 [0021] 이라는 배열을 reverse 해줘야 하지만, 해당 문제는 앞뒤 변환과정을 거치기 때문에 불필요합니다.
- 최종적으로 맵핑과 int진법 변환을 통해 형변환을 해줍니다.
코드
#프로그래머스 3진법 뒤집기
def solution(n):
result = []
if n<3:
return n
else:
while True:
div = n//3
rem = n%3
n = div
result.append(rem)
if n<3:
break
result.append(n)
return int(''.join(map(str, result)),3)
print(solution(45))
'알고리즘 풀이 > Python' 카테고리의 다른 글
[Python] 영역 구하기 (백준 2583번 파이썬) (0) | 2023.09.02 |
---|---|
[Python] 풍선 터뜨리기 (백준 2346번 파이썬) (0) | 2023.09.01 |
[Python] 이진수 덧셈 (백준 1252번 파이썬) (0) | 2023.08.31 |
[Python] 정수 삼각형 (프로그래머스 Lv3, 백준 1932번 파이썬) (0) | 2023.08.30 |
[Python] 요세푸스 문제 (백준 1158번 파이썬) (0) | 2023.08.29 |