문제) 3진법 뒤집기
코딩테스트 연습 - 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수
programmers.co.kr
- 내 풀이
- 1트
- 숫자 리스트 문자열로 합치기: ''.join(map(str, 숫자 리스트))
- N진수 → 10진수 변환: int( 문자열, N)
- 테스트 3, 7: 런타임 에러
def solution(n):
answer=[]
while n>3:
answer.append(n%3)
n//=3
answer.append(n) #뒤집어진 순서로 들어감
answer = ''.join(map(str,answer)) #숫자 리스트 문자열로 합치기
answer=int(answer,3) #10진수로 변환
return answer
- 2트
- while n>3 으로 하면
- int를 사용해서 10진수로 변환하는 경우 answer에 3이 포함되어 있기 때문에 런타임 에러가 발생
- → while n>=3 으로 변경
def solution(n):
answer=[]
while n>=3:
answer.append(n%3)
n//=3
answer.append(n) #뒤집어진 순서로 들어감
answer = ''.join(map(str,answer)) #숫자 리스트 문자열로 합치기
answer=int(answer,3) #10진수로 변환
return answer
print(solution(45))
print(solution(125))
#결과
7
229
- 다른 사람 풀이
- 리스트에 넣지 않고 바로 문자열에 넣기 : + 사용
- n>0인 경우 : 마지막 나머지 값까지 while문 내에서 들어가기 때문에 따로 작성해줄 필요 X
def solution(n):
answer=''
while n:
answer+=str(n%3)
n//=3
answer=int(answer,3)
return answer'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 1] [탐욕법(Greedy)] 체육복 (0) | 2022.03.21 |
|---|---|
| [프로그래머스] [Level 1] 폰켓몬 (0) | 2022.03.20 |
| [프로그래머스] [Level 1] 두 개 뽑아서 더하기 (0) | 2022.03.17 |
| [프로그래머스] [Level 1] 최소직사각형 (0) | 2022.03.17 |
| [프로그래머스] [Level 1] 나머지가 1이 되는 수 찾기 (0) | 2022.03.10 |