반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
N명씩 두 개의 팀이 있습니다. 각 팀원들은 숫자카드를 하나씩 가지고 있고 각 팀별로 한명 씩 나와서 게임을 시작합니다.
나의 숫자가 더 크면 승리, 같으면 무승부, 작으면 패배입니다.
팀 A의 숫자와 순서를 알고있을 때 팀 B가 가질 수 있는 최대 승리횟수를 찾아주세요
풀이 방법
1. 두 팀의 숫자를 내림차순 정렬을 해줍니다.
2. 두 팀의 가장 큰 수를 각각 뽑아서 비교합니다.
3. A 카드 보다 B 카드가 더 크다면 answer에 +1을 해주고 A카드와 B카드 모두 삭제해줍니다.
4. A 카드가 B 카드보다 더 크거나 같다면 A 카드보다 큰 수는 없기 때문에 A카드만 삭제후 2번으로 돌아가 반복합니다.
(B 카드는 삭제하지 않고 다음에 다시 이길 수 있는 숫자가 있는지 체크합니다.)
정답 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> A, vector<int> B) {
sort(A.begin(), A.end(), [](int& a, int& b) {return a > b; });
sort(B.begin(), B.end(), [](int& a, int& b) {return a > b; });
int answer = 0;
for (int idx_a = 0, idx_b = 0; idx_a < A.size(); idx_a++)
{
int numA = A[idx_a];
int numB = B[idx_b];
if (numA < numB)
{
answer++;
idx_b++;
}
}
return answer;
}
반응형
LIST
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
징검다리 건너기 [Lv. 3] (0) | 2024.09.17 |
---|---|
기지국 설치 [Lv. 3] (1) | 2024.09.07 |
최고의 집합 [Lv. 3] (C++) (0) | 2024.08.03 |
이중우선순위큐 [Lv. 3] (0) | 2024.07.23 |
보석 쇼핑 [LV. 3] (C++) (0) | 2024.07.21 |