NIRVANA
[level 1] 3진법 뒤집기 본문
문제
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요
문제 접근법
1) 입력받은 n을 3으로 나누어 3진법으로 변환한다. (이때, 거꾸로 저장되므로 다시 뒤집어줘야 원래 수가 나온다)
2) str형인 3진법을 list로 변환한 뒤, 뒤집는다.
3) 다시 str형으로 변환한 후, 10진법으로 변환한다.
참고: https://velog.io/@code_angler/파이썬-진수변환2진법-3진법-5진법-10진법n진법
파이썬 진수변환(2진법, 3진법, 5진법, 10진법)[n진법]
python에서는 기본적으로 int() 라는 함수를 지원한다int(string, base)2051104185276710진수로 변경이 가능하다.2, 8, 16진수는 bin(), oct(), hex() 함수를 지원한다.0b10110o130xb0b는 2진수, 0o는 8진수,
velog.io
def solution(n):
answer = 0
num =''
while n>0:
n, mod = divmod(n, 3)
num += str(mod)
num = num[::-1]
num_list = list(num)
num_list.reverse()
num = ''.join(num_list)
answer = int(num, 3)
return answer
divmod라는 함수가 있다는 걸 처음 알았다.
divmod는 몫과 나머지를 튜플 형태로 반환해준다고 한다!
작은 숫자를 할 때는 //, %보다 느리지만 큰 숫자일 경우 divmod함수가 더 빠르다고 한다.
참고: https://school.programmers.co.kr/learn/courses/4008/lessons/12732
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
다른 분들 풀이
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
answer = int(tmp, 3)
return answer
이 코드를 보고 나 바보다...를 확신함
어차피 뒤집어져서 나오는데 그걸 왜 또 뒤집고 난리를 쳤을까...
그냥 거기서 바로 10진법으로 바꾸면 되는데...
반성합니다
'Coding test(Python3) > Programmers' 카테고리의 다른 글
[level 1] 예산 (0) | 2023.07.18 |
---|---|
[level 1] 이상한 문자 만들기 (0) | 2023.07.18 |
[level 1] 같은 숫자는 싫어(다시??) (0) | 2023.07.17 |
[level 1] 최대공약수와 최소공배수 (0) | 2023.07.17 |
[level 1] 직사각형 별찍기 (0) | 2023.07.17 |