3진법 뒤집기

2024. 9. 5. 16:26프로그래머스-코딩테스트/Lv.1

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제


자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

 

 

 

 

코드


def solution(n):
    li = []
    while n >= 3:
        li.append(str(n % 3))
        n = n//3
    li.append(str(n))
    return int(''.join(li), 3)

 

 

 

 

노트


 10진법 수를 n으로 나눈 나머지를 변수에 저장하고 거꾸로 읽어주면 n진법 수

def solution(n, q):
	li = ''

    while n > 0:
        n, mod = divmod(n, q)  # n을 q로 나눈 몫과 나머지 튜플로 리턴
        li += str(mod)
	# '0021'이 담김
    return li[::-1] 
    # 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력
    
print(solution(45, 3))   # 1200

 

 

10진수로 변환

int(str, base)

int('101', 2)  # 5
  • base진법으로 된 str을 10진수로 바꿔줌. ex) int('101', 2) => 5

 

 

 

참조


https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A7%84%EC%88%98%EB%B3%80%ED%99%982%EC%A7%84%EB%B2%95-3%EC%A7%84%EB%B2%95-5%EC%A7%84%EB%B2%95-10%EC%A7%84%EB%B2%95n%EC%A7%84%EB%B2%95

 

파이썬 진수변환(2진법, 3진법, 5진법, 10진법)[n진법]

python에서는 기본적으로 int() 라는 함수를 지원한다int(string, base)2051104185276710진수로 변경이 가능하다.2, 8, 16진수는 bin(), oct(), hex() 함수를 지원한다.0b10110o130xb0b는 2진수, 0o는 8진수,

velog.io

 

 

'프로그래머스-코딩테스트 > Lv.1' 카테고리의 다른 글

이상한 문자 만들기  (0) 2024.09.06
크기가 작은 부분 문자열  (0) 2024.09.06
예산  (0) 2024.09.05
같은 숫자는 싫어  (0) 2024.09.05
최대공약수와 최소공배수  (0) 2024.09.05