반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131128
풀이
X에 존재하는 숫자의 개수, Y에 존재하는 숫자를 세서 겹치는 숫자와 그 개수를 파악한다.
앞 자리 수가 클수록 숫자가 커지므로 9부터 0까지 내려가며 answer에 추가해준다.
겹치는 숫자가 없으면 -1을, 모두 0이면 0을, 그 외에는 answer를 리턴하면 되는데
이 때 0임을 확인하기 위해 stoi를 사용하면 자릿수가 300만이므로 에러가 발생한다.
따라서, answer가 0인지 확인하려면 맨 앞 자리수만 확인하면 된다.
코드
#include <bits/stdc++.h>
using namespace std;
int Xdigit[10] = { 0, };
int Ydigit[10] = { 0, };
int possible[10] = { 0, };
string solution(string X, string Y) {
string answer = "";
for(int i=0; i<X.size(); i++) Xdigit[X[i] - '0']++;
for(int i=0; i<Y.size(); i++) Ydigit[Y[i] - '0']++;
for(int i=0; i<10; i++){
if(Xdigit[i] != 0 && Ydigit[i] != 0) possible[i] = min(Xdigit[i], Ydigit[i]);
}
for(int i=9; i>=0; i--){
while(possible[i] > 0){
answer += to_string(i);
possible[i]--;
}
}
if(answer.empty()) return "-1";
//if(stoi(answer) == 0) return "0";
if(answer[0] == '0') return "0";
return answer;
}
반응형
'Programming Solve > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 크기가 작은 부분 문자열 / C++ (0) | 2022.12.25 |
---|---|
프로그래머스 - 삼총사 / C++ (0) | 2022.12.24 |
프로그래머스 - 성격 유형 검사하기 / C++ (0) | 2022.12.24 |
프로그래머스 - 거리두기 확인하기 / C++ (0) | 2022.04.28 |
프로그래머스 - x만큼 간격이 있는 n개의 숫자 / Swift (0) | 2022.04.24 |