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

GomHyeok·2022년 5월 15일
0

📒활용개념

문제에서 주어진 숫자는 3개다. 그리고 그 3개가 반복해서 나타나는 형태다.
이러한 형태에서 생각나는 것은 3진수다. 진수변환을 활용한 문제풀이를 하였다.

📌문제설명

124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

  1. 124 나라에는 자연수만 존재합니다.
  2. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.

예시
10진법 124 나라 10진법 124 나라
1 1 6 14
2 2 7 21
3 4 8 22
4 11 9 24
5 12 10 41

자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.

즉 124의 반복이다. 앞의 10진법에서 1, 2, 3을 통해서 어떻게 3진수와 연결할 수 있을지 생각할 수 있다.

📌구현

#include <string>
#include <vector>

using namespace std;

string solution(int n) {
    string answer="";
    //10진수 1, 2, 3을 각각 3으로 나누었을 때 나머지가 각 자리의 수를 결정한다.
    string binary = "412";
    
    //상황에 맞게 적적하게 진수와 연결하여 문제를 푼다.
    while(n>0){
        answer=binary[n%3]+answer;
        if(n%3 == 0){
            n=n/3-1;
        }
        else{
            n/=3;
        }
    }
    
    return answer;
}

📌주의점

  • 처음 보자마자 3진수와 연결해야 한다는 것은 알 수 있었지만 정확히 어떻게 활용해야 할지 몰랐던 문제다.
  • 일반적인 진수변환과 다른 스타일의 문제이기 때문에 상황에 맞게 진수변환을 적적히 활용할 수 있어야 한다.
profile
github : https://github.com/GomHyeok/

0개의 댓글