C++/programmers 코딩테스트(level 1) C++

[C/C++] programmers Level 1 숫자 짝꿍

CE : 하랑 2023. 10. 26. 16:23

 

 

 

코드

 

#include <string>
#include <vector>
#include <algorithm> // sort()

using namespace std;

string solution(string X, string Y) {
    string answer = "";
    vector<int> num(10,0); // 0~9 범위로 X, Y 값을 카운트
    
    for(int i=0;i<X.size();i++){
        num[X[i]-'0']++; // X[i] 값 ++ 연산
    }
    
    for(int i=Y.size()-1;i>=0;i--){
        num[Y[i]-'0']--; // Y[i] 값 -- 연산
        if(num[Y[i]-'0']>=0){
            answer.push_back(Y[i]); // 0보다 크거나 같을 때 answer값에 추가
        }
    }
    
    sort(answer.begin(),answer.end(),std::greater<int>()); // answer string 값 내림차순 정렬
    
    if(answer==""){ // 짝꿍이 존재하지 않은 경우
        answer="-1";
    }else if(answer[0]=='0'){ // 공통된 숫자는 0으로만 구성된 경우
        answer="0";
    }
    
    return answer;
}