[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/12987
[풀이]
A의 각 값들을 B의 값이 최소한의 차이로 이기도록 하면 B의 최종 승점을 가장 높이는 방법이 될 것이다.
이를 위해 A와 B 배열을 모두 정렬한 후 포인터 2개를 두고 각 배열을 가리키도록 한다. A 값보다 B 값이 더 크다면(A와 B 배열을 모두 오름차순 정렬했으므로 가장 근소하게 A보다 B가 더 큰 경우가 될 것임) 승점을 높이고, A 인덱스와 B 인덱스 모두 증가시킨다.
[코드]
import java.util.*;
class Solution {
public int solution(int[] A, int[] B) {
int answer = 0;
//B 팀원들이 얻을 수 있는 최대 승점을 return
Arrays.sort(A);
Arrays.sort(B);
//1 3 5 7
//2 2 6 8
int aidx = 0;
int bidx = 0;
while(bidx < B.length){
if(A[aidx] < B[bidx]){
answer++;
aidx++;
}
bidx++;
}
return answer;
}
}
'알고리즘 공부 및 문제 풀이 > 프로그래머스(PRO)' 카테고리의 다른 글
[pro] 프로그래머스 level3 12942 최적의 행렬 곱셈 - dp (0) | 2023.02.02 |
---|---|
[pro] 프로그래머스 level3 42579 베스트앨범 (Java) - 해쉬 (0) | 2023.02.02 |
[pro] 프로그래머스 level3 12971 스티커 모으기2 (Java) - dp (0) | 2023.01.31 |
[pro] 프로그래머스 level3 1836 리틀 프렌즈 사천성 (Java) - 시뮬레이션 (0) | 2023.01.31 |
[pro] 프로그래머스 level3 1832 보행자 천국 (Java) - dp (0) | 2023.01.30 |