Old/Algorithms

[JAVA] 프로그래머스 : 숫자 게임 (Summer/Winter Coding(~2018))

유뱅유뱅뱅 2020. 9. 2. 13:37

programmers.co.kr/learn/courses/30/lessons/12987?language=java

 

코딩테스트 연습 - 숫자 게임

xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 �

programmers.co.kr

해결 방안

문제에서 원하는 것은 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;
    }
}