No Rules Rules

124 나라의 숫자 (feat. 프로그래머스, 12899번) 본문

생활/코테

124 나라의 숫자 (feat. 프로그래머스, 12899번)

개발하는 완두콩 2022. 7. 21. 20:54
728x90
반응형

124 나라의 숫자
https://programmers.co.kr/learn/courses/30/lessons/12899

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

반응형
// woohyeon.kim
#include <string>

using namespace std;

string calc(int& n)
{
    string tmpl = "";
    auto remainder = 0;
    while(n != 0)
    {
        remainder = n % 3;
        n /= 3;
        if(remainder == 0)
        {
            tmpl = "4" + tmpl;
            --n;
        }
        else
            tmpl = to_string(remainder) + tmpl;
    }
    return tmpl;
}

string solution(int n) {
    string answer = calc(n);
    return answer;
}
// *&)*@*/

핵심은 3의 배수가 되었을때, 의도했던 3진수로 표현되지 않는다는데 있습니다.

3은 10(3진수)이나 이 나라에서는 4(124나라) 로 표현

6은 20(3진수)이나 이 나라에서는 14(124나라) 로 표현

9는 100(3진수)이나 이 나라에서는 24(124나라) 로 표현

12는 110(3진수)이나 이 나라에서는 44(124나라) 로 표현

됩니다.

숫자를 3으로 나눈 나머지를 구하고, 3으로 나누었으니 숫자를 3으로 나눈 몫으로 변경시켜줬을때

나머지가 0이면 124나라에 맞게 변경이 되어야 한다는 것인데,

요지는 3으로 나눈 나머지가 0이면, 변경된 몫에 -1을 한다는 것입니다.

9를 예로 들면,

remainder = 9 % 3;

share = 9 / 3;

if(remainder == 0)

string = "4" + string;

--share;

을 수행했을때 9에 의한 첫 문자는 4가 되고, share는 2가 되기 때문에

결과적으로 "24"가 됩니다.

728x90
반응형
Comments