본문 바로가기
공부-코딩테스트/코테풀이 - 자바, 파이썬

124의 나라 (코딩테스트, 프로그래머스, 파이썬)

by 령과 2022. 2. 4.

문제

https://programmers.co.kr/learn/courses/30/lessons/12899

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

나의 코드

def solution(n):
    answer=''
    
    while True:
        if n%3 != 0:
            answer = str(n%3) + answer
            n = n//3
        else:
            answer = '4' + answer
            n = n//3 -1
        if n <= 0:
            break;
            
    return answer

다음과 같은 진법문제들은 진법수에 맞는 규칙이 생기는 것 같다.

2진법이면 n%2, 3진법이면 n%3에 따른 규칙이 생기는 것을 인지하고 문제에 접근한다.

대신 124 문제는 일반 3진법과 달리 0대신 4를 쓰기 때문에 규칙을 찾아야 한다.

 

%3을 했을 때 추가되어야 할 값은 4이고 3을 넘겨야할 경우 다음 자리가 추가된다. 

붉은 선 과 초록선은 규모를 /3을 하고보면 같은 처리를 하면 될 것 처럼 보였다.

따라서 %3을 하였을 때 나머지가 0일지(3->4로 표현해야하는 경우), 0이 아닐지에 따라 처리를 다르게 하고

처리 후 /3(파이썬은 //)을 하고 0이하로 되지 않는다면 위의 처리를 다시 실행하는 식으로 answer을 만들면 될 것이다.

댓글