programmers.co.kr/learn/courses/30/lessons/12987?language=java
해결 방안
문제에서 원하는 것은 B의 최대 승점이므로 A가 최소인 경우부터 차근차근 B가 높을 때의 갯수를 구해준다.
A와 B 배열을 오름차순으로 정렬해준다.
A 작은 수부터 B와 비교를 해주는데 이때 B의 배열을 하나씩 증가하면서 해준다.
이 때 B 배열의 index 시작 값은 A[i] < B[j] 보다 큰 경우가 됬을 때 idx = j+1 이 되게된다.
왜냐하면 해당 A[i]와 매칭 된게 B[j]이기 때문이다.
코드
import java.util.*;
// 숫자 게임
class Solution {
public int solution(int[] A, int[] B) {
int answer = 0;
Arrays.sort(A);
Arrays.sort(B);
int idx = 0;
for(int i=0; i<A.length; i++){
// B의 idx까지는 A팀과 연결이 됬으므로
for(int j=idx; j<B.length; j++){
// B가 더 큰 경우
if(A[i] < B[j]){
answer++;
idx = j+1;
break;
}
// B가 더 작거나 같은경우
else{
continue;
}
}
}
return answer;
}
}
'Old > Algorithms' 카테고리의 다른 글
[JAVA] 프로그래머스 : 키패드 누르기 (2020 카카오 인턴십) (0) | 2020.09.07 |
---|---|
[JAVA] 프로그래머스 : 폰켓몬 (찾아라 프로그래밍 마에스터) (0) | 2020.09.04 |
[JAVA] 프로그래머스 : 점프와 순간 이동 (Summer/Winter Coding(~2018)) (0) | 2020.09.02 |
[JAVA] 프로그래머스 : 방문 길이 (Summer/Winter Coding(~2018)) (0) | 2020.09.01 |
[JAVA] 프로그래머스 : 멀쩡한 사각형 (Summer/Winter Coding(2019)) (0) | 2020.09.01 |