본문 바로가기

problem solving

[프로그래머스]124나라의 숫자

3으로 나눈 나머지를 더하는 방식으로 진행하면 결과를 도출할 수 있다.

124숫자를 사용해야 하므로 3으로 나눈 나머지의 경우인 0, 1, 2에서 0은 4로 변환해서 사용해준다.

하지만 여기서 문제점이 발생하는데 나머지가 0으로 나올 때 값이 정확히 떨어지지 않는다.

1, 2, 4 세가지 수가 연속으로 나올 때 몫이 같야야 순회가 되는데

4일 때는 3으로 딱 떨어져서 몫이 1, 2일 때보다 +1되는 걸 볼 수 있다.

그래서 주어진 값을 나눈 후 나머지가 0일 때(변환하면 4)는 -1을 해야 정상적인 결과를 볼 수 있다.

 

#include <string>
#include <vector>
 
using namespace std;
 
string solution(int n) {
    string answer = "";
 
    while(n > 0) {
        int temp = n % 3;
        n = n / 3;
        if(temp == 0) { 
            n--;
            temp = 4; }
        answer = to_string(temp) + answer;
    }
    
    return answer;
}
cs