Coding Test/Programmers

[프로그래머스] Lv.3: 숫자 게임 - java

찬 주 2024. 10. 2. 22:21

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12987

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

접근법

출전 순서는 사실 필요하지 않다. 그냥 B팀에서 A팀을 최대한 많이 이기면 된다.

따라서 A와 B 배열을 오름차 순으로 정렬했다.

 

A와 B 배열의 인덱스를 각각 만든 뒤 각각의 숫자를 비교한다.

비교해서 나올 수 있는 경우는 2가지가 있다.

1. A팀의 점수가 높거나 같은 경우

2. B팀의 점수가 높은 경우

 

1번의 경우 현재 A팀의 점수는 A팀이 가지고 있는 숫자 중 가장 작은 숫자이다.

따라서 해당 숫자보다 큰 숫자를 가지고 있는 B팀의 사람을 찾아야한다.

 

2번의 경우 A, B팀 모두 다음 사람으로 넘어간다.

 

코드

import java.util.*;

class Solution {
    public int solution(int[] A, int[] B) {
        int score = 0;
        
        Arrays.sort(A);
        Arrays.sort(B);
        
        int idxA = 0;
        int idxB = 0;
        while (idxA < A.length && idxB < B.length) {
            if (A[idxA] < B[idxB]) {
                score++;
                idxA++;
                idxB++;
            } else if (A[idxA] >= B[idxB]) {
                idxB++;
            }
        }
        
        
        return score;
    }
}

 

레벨3 문제치곤 많이 쉬웠다!