문제
힌트
- 정렬을 이용하자.
소스 코드 (1차 시도)
// [프로그래머스] 숫자 게임
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int solution(vector<int> A, vector<int> B) {
int answer = 0;
std::sort(A.begin(), A.end());
std::sort(B.begin(), B.end());
vector<int>::iterator B_iter = B.begin();
for (vector<int>::iterator iter = A.begin(); iter != A.end(); iter++) {
while (B_iter != B.end()) {
if (*B_iter >= *iter) {
answer++;
B_iter++;
break;
}
B_iter++;
}
if (B_iter == B.end()) break;
}
return answer;
}
채점 결과 (1차 시도)
정확성: 16/18 (76.2)
효율성: 3/3 (14.3)
합계: 90.5 / 100.0
문제 원인
- 문제를 다시 살펴보니 문제 요건 중에 A점수와 B점수가 같은 경우에는 점수를 얻지 못하는 요건이 있었다.
- 따라서, 위 소스 코드에서 등호를 없애주니 통과하였다.
소스 코드 (2차 시도)
// [프로그래머스] 숫자 게임
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int solution(vector<int> A, vector<int> B) {
int answer = 0;
std::sort(A.begin(), A.end());
std::sort(B.begin(), B.end());
vector<int>::iterator B_iter = B.begin();
for (vector<int>::iterator iter = A.begin(); iter != A.end(); iter++) {
while (B_iter != B.end()) {
if (*B_iter > *iter) {
answer++;
B_iter++;
break;
}
B_iter++;
}
if (B_iter == B.end()) break;
}
return answer;
}
채점 결과 (2차 시도)
정확성: 18/18 (85.7)
효율성: 3/3 (14.3)
합계: 100.0 / 100.0
'개발 관련 기타 > 알고리즘' 카테고리의 다른 글
[프로그래머스] (C++) 순위 (0) | 2019.12.22 |
---|---|
[프로그래머스] (C++) 매칭 점수 (0) | 2019.12.16 |
[프로그래머스] (C++) 구명 보트 (0) | 2019.12.12 |
[프로그래머스] (C++) N진수 게임 (0) | 2019.12.12 |
[프로그래머스] (C++) 가장 큰 수 (0) | 2019.12.10 |