n진수를 표현하는 매커니즘만 알았다면, 쉽게 풀 수 있는 문제였을텐데, 나는 그걸 몰랐다.
처음에는 수를 앞에서부터 차례대로 만드려니까
계속 복잡해져서 뭘 하고 있는지 헷갈리게 되고 다시 짜고를 반복하다가 그냥 다른 사람 풀이 참고했다..
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
while(n>0){
int remain = n%3;
if(n%3 ==0){
answer = "4" + answer;
n--;
}
else{
answer = to_string(remain) + answer;
}
n/=3;
}
return answer;
}
n 진수를 표현하는 매커니즘은 결국 맨 뒤부터 채웠을 때, 나머지가 그 값이 되고 해당 수를 몫으로 업데이트 해주면 된다.
이 문제의 경우는 3진수를 베이스로 하지만 조금 달라서, 나머지가 0인 경우에 대해서만 컨트롤 해주면 되는 문제였다.
꽤 오래 고민했지만 그래도 n진수 표현방법에 대해서 익힐 수 있었다.