쌓고 쌓다
[프로그래머스] 숫자 게임 Java 풀이 및 해설 본문
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;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 기지국 설치 Java 풀이 및 해설 (0) | 2024.05.08 |
---|---|
[프로그래머스] 단속카메라 Java 풀이 및 해설 (0) | 2024.05.07 |
[프로그래머스] 등굣길 Java 풀이 및 해설 (0) | 2024.05.04 |
[프로그래머스] 최고의 집합 Java 풀이 및 해설 (0) | 2024.05.03 |
[프로그래머스] 야근 지수 Java 풀이 및 해설 (0) | 2024.05.02 |
Comments