GitHubSeob
C++ / 프로그래머스 / 숫자 게임 본문
문제 |
https://school.programmers.co.kr/learn/courses/30/lessons/12987
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이 |
B팀이 승점을 가장 높이는 방법을 구하는 것이다.
그래서 A팀의 승점은 신경 쓰지 않고 문제를 풀었다.
먼저 A팀을 내림차순으로 정렬한다, lower_bound를 이용할 것이기 때문에 B팀은 오름차순으로 정렬한다.
A팀의 점수를 탐색하면서 B팀에 A팀 점수+1 값이 있는지를 lower_bound를 이용해 확인한다.
만약 있다면 B팀의 승점을 1 더하고 사용했으므로 삭제한다.
만약 없다면 B팀의 가장 낮은 점수를 내고 점수를 삭제한다.
코드 |
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> A, vector<int> B) {
int answer(0), idx(0), idx2(0);
sort(A.begin(), A.end(), greater<int>());
sort(B.begin(), B.end());
for (idx = 0; idx < A.size(); ++idx) {
idx2 = lower_bound(B.begin(), B.end(), A[idx] + 1) - B.begin();
if (idx2 < B.size()) {
answer++;
}
B.erase(B.begin() + idx2 % B.size());
}
return answer;
}
'Programmers > Level 3' 카테고리의 다른 글
C++ / 프로그래머스 / 베스트앨범 (0) | 2023.07.08 |
---|---|
C++ / 프로그래머스 / 기지국 설치 (0) | 2023.07.07 |
C++ / 프로그래머스 / 단속카메라 (0) | 2023.07.07 |
C++ / 프로그래머스 / 순위 (0) | 2023.07.02 |
C++ / 프로그래머스 / 합승 택시 요금 (0) | 2023.07.02 |