프로그래머스/Python
[프로그래머스] 124 나라의 숫자 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 10. 30. 16:13
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 설명
2. 풀이과정
해당 문제는 10진법을 124로 구성된 3개의 수로 변환하는 문제이다.
3개의 수를 가지고 바꾸는 것은 쉽게 3진법이라고 할 수 있다.
3진법은 보통 012로 구성되어 있지만 위 문제는 124를 가지고 수를 변환해야 한다.
그냥 3진법으로 바꾸려면 3으로 나눈 나머지를 저장하고 몫으로 수를 새롭게 바꾸어 0이 될 때까지 반복하면 된다.
하지만 해당 문제에서 수가 3으로 나누어 떨어지는 수이면 수를 3으로 나눈 몫이 아니라 몫에서 1을 빼준 값으로 바꿔야 한다.
- 124로 변환한 결과를 저장할 리스트를 생성한다. li = list()
- 변환할 숫자가 0보다 크면 반복한다. while (n > 0)
- 만약 숫자를 3으로 나눈 나머지가 0이면 if (n % 3 == 0)
- 4를 추가하고 li.append('4')
- 3으로 나눈 몫에 1을 뺀 결과를 새로 저장한다. n = n // 3 - 1
- 반면에 숫자를 3으로 나눈 나머지가 0이 아니면 else
- 3으로 나눈 나머지를 추가하고 li.append(str(n % 3))
- 3으로 나눈 몫의 결과를 새로 저장한다. n //= 3
- 124로 바꿔 리스트에 저장한 결과는 거꾸로 저장되어 있기 때문에 뒤집어준다. li.reverse()
- 뒤집은 결과를 하나의 문자열로 합친 결과를 저장한다. answer = ''.join(li)
반응형
3. 소스코드
def solution(n):
answer = ''
li = list()
while (n > 0):
if (n % 3 == 0):
li.append('4')
n = n // 3 - 1
else:
li.append(str(n % 3))
n //= 3
li.reverse()
answer = ''.join(li)
return answer
728x90
반응형