알고리즘/프로그래머스
[프로그래머스] 숫자 게임 Java 풀이 및 해설
승민아
2024. 5. 6. 09:27
https://school.programmers.co.kr/learn/courses/30/lessons/12987#qna
풀이 방법
최대 점수를 얻기 위해서
상대가 내는 숫자 카드이상이면서 최대한 가까운 숫자 카드를 내야한다.
그래야지 내가 가진 큰 숫자의 카드는 또 다른 상대의 큰 숫자 카드를 이기는데 사용할 수 있기 때문이다.
A와 B의 숫자 카드를 오름차순으로 정렬한다.
A의 숫자 카드를 반복문으로 끝에서부터 돈다.
그럼 A가 가진 가장 큰 숫자 카드순으로 반복문을 돌텐데
이때 B가 가진 가장 큰 숫자의 카드와 비교하며 점수를 계산하면 된다.
B가 이길 수 있는 경우 해당 카드(idx번째)는 승부를 위해 사용한다. (사용시 idx 감소)
이길 수 없는 경우는 최소값의 카드를 사용해서 패배했다고 가정하면 된다.
전체 코드
import java.util.*;
class Solution {
public int solution(int[] A, int[] B) {
int answer = 0;
Arrays.sort(A);
Arrays.sort(B);
int idx = B.length-1;
for(int i=A.length-1; i>=0; i--) {
if(A[i] < B[idx]) {
answer++;
idx--;
}
}
return answer;
}
}