본문 바로가기

코딩테스트/프로그래머스

[프로그래머스] 숫자 짝꿍

728x90
반응형


문제

https://school.programmers.co.kr/learn/courses/30/lessons/131128

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이와 코드

1. 두 문자열을 하나의 char로 쪼개서 벡터에 저장

2. 두 개의 벡터의 교집합을 반환하는 함수 사용

3. 내림차순으로 answer에 추가

4. 예외 처리로 -1과 0 여러개인 경우 추가

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

string solution(string X, string Y) {
    int zeroCount = 0;
    string answer = "";
    vector<char> xDigits;
    vector<char> yDigits;
    vector<char> intersection;
    
    for(int i=0; i<X.length(); i++){
        xDigits.push_back(X[i]);
    }
    
    for(int j=0; j<Y.length(); j++){
        yDigits.push_back(Y[j]);
    }
    
    sort(xDigits.begin(), xDigits.end());
    sort(yDigits.begin(), yDigits.end());
    
    set_intersection(xDigits.begin(), xDigits.end(), yDigits.begin(), yDigits.end(), back_inserter(intersection));
    
    if (intersection.size() <= 0){
        return "-1";
    }
    
    for (int k=intersection.size()-1; k>=0; k--){
        answer += intersection[k];
        
        if (intersection[k] == '0'){
            zeroCount++;
        }
    }
    
    if (zeroCount == intersection.size()){
        return "0";
    }
    
    return answer;
}
728x90
반응형