GitHubSeob
C++ / 프로그래머스 / 숫자 짝꿍 본문
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131128
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
X와 Y를 탐색하면서 숫자의 개수를 numX, numY 벡터에 저장한다.
numX와 numY를 비교하면서 최솟값을 partner벡터에 넣는다. 이때, 0인 경우는 제외한다.
그다음 partner벡터를 내림차순으로 정렬한다.
비어있으면 -1을, 맨 앞이 0이라면 0을, 나머지 경우는 그대로 return 한다.
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string X, string Y) {
string answer = "";
vector<int>numX(10, 0);
vector<int>numY(10, 0);
vector<char>partner;
int idx(0), min_cnt(0);
for (idx = 0; idx < X.size(); ++idx) {
numX[X[idx] - '0']++;
}
for (idx = 0; idx < Y.size(); ++idx) {
numY[Y[idx] - '0']++;
}
for (idx = 0; idx <= 9; ++idx) {
min_cnt = min(numX[idx], numY[idx]);
while (min_cnt--)
partner.push_back(idx + '0');
}
sort(partner.begin(), partner.end(), greater<>());
for (idx = 0; idx < partner.size(); ++idx) {
answer += partner[idx];
}
if (answer[0] == '0')
answer = "0";
else if (answer.empty())
answer = "-1";
return answer;
}
'Programmers > Level 1' 카테고리의 다른 글
C++ / 프로그래머스 / 덧칠하기 (0) | 2023.06.24 |
---|---|
C++ / 프로그래머스 / 기사단원의 무기 (0) | 2023.06.24 |
C++ / 프로그래머스 / 옹알이 (2) (0) | 2023.06.24 |
C++ / 프로그래머스 / 문자열 나누기 (0) | 2023.06.21 |
C++ / 프로그래머스 / 대충 만든 자판 (0) | 2023.06.21 |