알고리즘왕/Programmers

[프로그래머스/12987/JAVA] 숫자놀이

찌 ㅋ 2021. 3. 13. 18:59
날짜 분류 번호 알고리즘 분류 링크
21-03-13 프로그래머스 12987 그리디 programmers.co.kr/learn/courses/30/lessons/12987



문제 요약

  1. A팀 N명과 B팀 N명이 각각 무작위로 자연수를 부여받았을 때, B팀의 최대 승점 구하기
  2. 게임 규칙
    • A팀 한명과 B팀 한명이 서로 수를 비교하여 큰 수를 가진 팀에 +1점, 동일할 경우 둘 다 0점
    • 모든 사람은 한번만 출전 가능하며, 서로 동일한 숫자를 가질 수 있음
    • B팀은 A팀의 출전 순서를 앎

 

풀이

  1. A팀과 B팀을 카드 숫자에 따라 오름차순 정렬
  2. A팀을 기준으로 반복문을 돌리면서 현재 A팀 출전 숫자보다 큰 숫자를 가진 B팀의 팀원이 나올 때까지 b의 인덱스를 증가

 

비고

  • 레벨 3인데 너무 허무하게 풀려서 당황 ㅎ

 

더보기
package SummerWinterCoding2018.P12987_숫자게임;

import java.util.Arrays;

public class Solution {

	public static int solution(int[] A, int[] B) {
		int answer = 0;
		
		int N = A.length;
		Arrays.sort(A);
		Arrays.sort(B);
		
		int b = 0;
		for (int a = 0; a < N; a++) {
			while(b < N && A[a] >= B[b]) {
				b++;
			}
			
			if(b >= N)
				break;
			
			b++;
			answer++;
			
		}
		
		return answer;
	}

	public static void main(String[] args) {
//		int[] A = { 5, 1, 3, 7 };
//		int[] B = { 8, 2, 6, 2 };
		int[] A = {2,2,2,2};
		int[] B = {1,1,1,1};
		System.out.println(solution(A, B));
	}

}