티스토리 뷰

#include <string>
#include <vector>

using namespace std;

string solution(int n) {
    string answer = "";
    
    char c[3] = {'4', '1', '2'};
    
    while(n > 0)
    {
        int r = n % 3;  
        answer = c[r] + answer; 
        
        n /= 3;  
        if(r == 0) n--;  
    }
    
    return answer;
}

 

3진법 계산을 응용한 문제이다. 

이번 문제는 기존의 0, 1, 2가 아닌 아래와 같이 4, 1, 2를 나머지로 갖는다.

n%3==0 : 4 / n%3==1 : 1 / n%3==2 : 2

 

따라서 이를 토대로 answer에 값을 더해나가게 된다.

그리고 3으로 나누어 떨어진 경우를 추가적으로 체크해주어야 한다.

124 나라의 숫자에는 0이 없고, 대신 4를 사용해야 하기 때문이다.

 

이를 위해 3으로 나눈 몫의 값을 추가로 1을 빼주면 해결된다.

기존에 구한 4와 1을 빼준 몫을 기준으로 계산하여 더해주면 원하는 최종 값을 얻게 된다.

<예시 6>

6%3 = 몫 2, 나머지 0

다음 n = 2-1 = 1

1%3 = 몫 0, 나머지 1
-> 1더해줌

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함