문제
자연수 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진법 수로 반환하게 해준다.
'Python > 프로그래머스' 카테고리의 다른 글
[프로그래머스 lv.1]최소직사각형(건너뛴 문제 다시풀기) (0) | 2023.09.20 |
---|---|
[프로그래머스 lv.1] 신규 아이디 추천 (건너뛴 문제 다시풀기) (1) | 2023.09.19 |
[프로그래머스 lv.1] [카카오 인턴] 키패드 누르기 (건너뛴 문제 다시풀기) (0) | 2023.09.17 |
[프로그래머스 lv.1] 크레인 인형뽑기 게임 (건너뛴 문제 다시풀기) (0) | 2023.09.17 |
[프로그래머스 lv.1] 실패율 (건너뛴 문제 다시풀기) (0) | 2023.09.16 |