본문 바로가기

Algorithm/Programers - C++

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

문제

풀이

#include <string>
#include <vector>
using namespace std;

string solution(int n) {
    //3진법
    string answer = "";
    vector<string> nara = {"1","2","4"};
    while(n>0){
        n = n-1;
        answer.insert(0,nara[n%3]);
        n = n/3;
    }
    return answer;
}

숫자가 1, 2, 4 뿐이므로 3진법과 동일한 방법이라 생각하고 풀었다.

3진수랑 비교했을 때 각 자리다 1씩 차이가 생기기 때문에 -1을 해주었다.

 

 

 


 

 

다른 사람 풀이

#include<iostream>
#include<vector>
using namespace std;

string change124(int no)
{
    string answer = "";
  int a;
    while(no > 0){
    a = no % 3;
    no = no / 3;
    if (a == 0){
        no -= 1;
    }
    answer = "412"[a] + answer;
  }

    return answer;
}
int main()
{
    int testNo = 6;
    string testAnswer = change124(testNo);

    cout<<testAnswer;
}

 

"412"[index] 부분이 인상적이다!

위를 사용하여 vector를 따로 만들지 않고도 풀 수 있었다.

 

 


https://popawaw.tistory.com/46

 

c++ 문자열 중간에 삽입하기

#include #include using namespace std; int main() { string sentence = "i coding"; sentence.insert(2, "hate "); cout << sentence << endl; sentence.insert(7, "or like "); cout << sentence << endl; ret..

popawaw.tistory.com