본문 바로가기
문제 풀이/프로그래머스 (Programmers)

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

by 희조당 2021. 10. 2.
728x90

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

 

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

 

programmers.co.kr


 문제 풀이

3개의 숫자만 쓸 수 있다는 점이 3진수를 사용하라는 힌트이다.

여기서 주의해야 할 점은 3으로 나누어 떨어지는 경우이다. 

10진수 3진수 124나라
1 1 1
2 2 2
3 10 4
4 11 11
- - -
12 110 44

3으로 나누어 떨어지는 경우에는 몫이 하나 남기 때문에 -1을 해줘야 한다.

그 외에는 수 체계 바꾸기와 동일하게 하면 된다!

 느낀 점

보자마자 3진수를 생각해냈지만 수를 바꾸는데서 많이 헤맨 거 같다..

 코드

#include <string>

using namespace std;

string solution(int n) {
    string answer = "";
    int tmp = n;

    while (tmp > 0) {
        answer = "412"[tmp % 3] + answer;
        if (tmp % 3 == 0) tmp = (tmp - 1) / 3;
        else tmp /= 3;
    }

    return answer; 
}

댓글