본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다
파이썬 코드
# 124 나라의 숫자
def solution(n):
answer = ''
# 숫자 변환
# n이 3 미만이면 바로 리턴
if n < 3:
return str(n)
# n이 3이상이면 반복
while n >= 3:
# 나머지 구하기
remain = (n % 3)
# 나머지가 0 이하일 때 n을 1 빼야한다.
# 0이라는 개념이 없기 때문이다.
if remain == 0:
n -= 1
answer += '4'
if remain == 1:
answer += '1'
if remain == 2:
answer += '2'
# n에 3을 나눈 몫을 넣기
n = n // 3
# 앞자리에 0이 오면 안되므로
if n != 0:
answer += str(n)
# 위의 로직은 나머지를 그때 그때 넣으므로 결과값이 거꾸로 만들어진다.
# 반대로 뒤집어서 출력한다.
return answer[::-1]
Comment
기본적인 틀은 3진법 변환 문제이나, 0의 존재가 없으므로 이것을 유의하여야한다. 그러므로 3과 같이 나머지가 0이 되는 경우, 몫을 -1해야 한다. 그렇지 않으면 9의 경우, 처음에 몫이 3, 나머지가 0이다. 그러면 다음 루프에서 3의 나머지가 0이므로 앞자리에 4가 와버린다.
Reference
'programming study > Algorithm' 카테고리의 다른 글
[프로그래머스] 기능 개발 - python 풀이 (0) | 2021.04.28 |
---|---|
[프로그래머스] 주식가격 - python 풀이 (0) | 2021.04.27 |
[프로그래머스] 프린터 - python 풀이 (0) | 2021.04.25 |
[프로그래머스] 다리를 지나는 트럭 - python 풀이 (0) | 2021.04.25 |
[프로그래머스] 문자열 내 p와 y의 개수 - python 풀이 (0) | 2021.04.21 |