프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 핵심은 정렬과 b < a이면 B 안에서 b보다 상대적으로 작은 숫자를 사용해야하는 것
- 전자는 sort를 사용했고 후자는 정렬된 배열에서 A 기준으로 역방향으로 순회하며 b < a면 idxB의 값을 감소시키지 않는 것으로 해결
#include <string>
#include <vector>
#include <algorithm>
// 두 팀의 순서가 모두 고정된 것이 아니므로 순서는 무시
// 두 배열 모두 정렬한 뒤에 size - 1부터 비교하면 될 듯
// 이렇게하면 a보다 더 큰 숫자 중에 제일 작은 숫자를 뽑거나 할 필요는 없을듯
// b가 a보다 작으면 B 안에서 b보다 상대적으로 작은 숫자를 꺼내야함
// 두 개 배열을 두고 size - 1부터 --해가면서 A가 0에 도달하면 반복을 끝내면 될거 같음
using namespace std;
int solution(vector<int> A, vector<int> B) {
int answer = 0;
int idxA = A.size() - 1;
int idxB = idxA;
// 정렬
sort(A.begin(), A.end());
sort(B.begin(), B.end());
for(int i = idxA; idxA >= 0; i--) {
int numA = A[idxA];
int numB = B[idxB];
// numB가 numA보다 크면
if(numB > numA) {
// answer++하고 B에서 다음으로 큰 숫자를 준비
answer++;
idxB--;
}
// A에서 다음으로 큰 숫자 준비
idxA--;
}
return answer;
}
'프로그래머스 > 3레벨' 카테고리의 다른 글
[프로그래머스/C++] 베스트앨범 (0) | 2024.03.25 |
---|---|
[프로그래머스/C++] 기지국 설치 (0) | 2024.03.25 |
[프로그래머스/C++] 단속카메라 (0) | 2024.03.22 |
[프로그래머스/C++] 최고의 집합 (0) | 2024.03.22 |
[프로그래머스/C++] 등굣길 (0) | 2024.03.22 |