이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

코딩테스트

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

이쿠우우 2022. 3. 21. 21:34
반응형

 

 

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

 

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

 

programmers.co.kr

 

글쓴이의 답

개인적인 풀이 임으로

이것보다 더 좋은 알고리즘은 많음...

이렇게도 풀이하는구나.. 공유하기 위해 올림...

#include <string>
#include <vector>
#include <iostream>

using namespace std;

string solution(int n) {
    string answer = "";
    
    vector<int> ternary;
    
    do {
        int div = n/3;
        int rem = n%3;
        n = div;            
        ternary.insert(ternary.begin(), rem);        
    }while(n >= 3);
    
    if(n != 0){
        ternary.insert(ternary.begin(), n);        
    }
    
    bool check = false;
    for(int i = ternary.size()-1; i >= 0; i--){
        int temp = ternary[i];
        if(true == check){
            temp -= 1;
            check = false;
            if(0 > temp ){
                check = true;
                temp =2;
            }
            if((temp == 0) &&(i == 0)){
                break;
            }
        }        
        
        if(0 == temp){
            answer = "4" + answer;
            check = true;
        }
        else{
            answer = to_string(temp) + answer;
        }
    }
    
    return answer;
}



꾸준히 하다보면 실력이 늘겠지..

반응형