본문 바로가기

programming study/Algorithm

[프로그래머스] 124 나라의 숫자 - python 풀이

본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다

파이썬 코드

# 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

프로그래머스