Python/프로그래머스

[프로그래머스 lv.1] 3진법 뒤집기 (건너뛴 문제 다시풀기)

묘걍 2023. 9. 18. 15:48

문제

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


제한사항

  • n은 1 이상 100,000,000 이하인 자연수입니다.

 

예전 풀이

생각

 

코드

 

다시 생각해보기

생각

3진법으로 바꾸는 방법이 내장함수 등으로 이미 구현되어 있는건지

아니면 코드로 새로 짜라는건지..

 

 

코드

 

 

다른 사람 풀이

def solution(n):
    answer = ''

    while n > 0:			
        n, re = divmod(n,3)	# n을 3으로 나눈 몫과 나머지
        answer += str(re)
    return int(answer, 3)

# divmod() : 몫과 나머지를 리턴합니다. 리턴 값이 2개이므로 튜플을 사용합니다.
# int(x, base) : base 진법으로 구성된 str 형식의 수를 10진법으로 변환해 줌

코드 스스로 해석하고 이해하기

- n이 0이 아닌 동안

** divmod() **
- Python의 내장 함수로, 두 숫자(정수 또는 실수)의 나눗셈 결과로 나누기와 나머지를 한 번에 반환
- 기본 형식 : divmod(a, b)
     - a: 피제수 (나누어 지는 수, 분자에 위치한 수)
     - b: 제수 (나누는 수, 분모에 위치한 수)
-  반환값: (a//b, a%b), 즉 몫과 나머지

- 몫과 나머지를 리턴하는 divmod()를 사용해 n을 3으로 나눈 몫과 나머지를 각각 n과 re에 저장해준다

     - n에 덮어 쓰기 되는 것

- answer 문자열에 나머지를 붙여준다.

- 그 과정이 모두 끝나면

** int(x, base) **
- int() 함수는 선택적으로 두 번째 매개변수인 base를 가질 수 있다. 
- 주어진 문자열을 지정된 진법의 숫자로 해석하는 데 사용된다.
- 주의할 점은 문자열의 내용이 지정된 진법에 맞는 유효한 값이어야 한다.
- base 매개변수는 주로 다른 진법의 숫자를 10진법의 정수로 변환할 때 사용된다.

- answer 문자열에 담긴 수를 3진법으로 해석한 뒤 그 수를 10진법 수로 반환하게 해준다.