[프로그래머스] 숫자 게임 - Java

syeony·2026년 2월 22일

Java

목록 보기
30/30


문제 바로가기

틀린코드

처음엔 순열 완탐 생각했다.
시간초과 엔딩

import java.util.*;
import java.io.*;

class Solution {
    static boolean[] v;
    static int[] A,B,C;
    static int answer,n;
    
    public int solution(int[] A, int[] B) {
        answer = 0;
        n=A.length;
        
        v=new boolean[n];
        this.A=A;
        this.B=B;
        C=new int[n];
        
        perm(0);
        
        return answer;
    }
    
    static void perm(int idx){
        if(idx==n){
            int score=0;
            for(int i=0;i<n;i++){
                if(A[i]<C[i]) score++;
            }
            answer=Math.max(answer,score);
        }
        
        for(int i=0;i<n;i++){
            if(!v[i]){
                v[i]=true;
                C[idx]=B[i];
                perm(idx+1);
                v[i]=false;
            }
        }
    }
}

정답 코드

그냥 배열 정렬하고
현재 B값이 A보다 같거나 작을 경우 B의 다음 index 체크
현재 B값이 A보다 큰 경우를 A의 index를 증가
해주면 됐다.

import java.util.*;
import java.io.*;

class Solution {
    public int solution(int[] A, int[] B) {
        int answer = 0;
        Arrays.sort(A);
        Arrays.sort(B);
        
        for(int i=0;i<A.length;i++){
            if(A[answer]>=B[i]) continue;
            answer++;
        }
        return answer;
    }
}
profile
cross platform과 aOS, iOS에 관심이 많은 모바일 개발자 지망생 오승연입니다

0개의 댓글