본문 바로가기

프로그래머스 - JAVA

코딩테스트 연습 > 탐욕법(Greedy) > 체육복

기존 코드

import java.util.*;

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = 0;
        ArrayList <Integer> lostArrayList = new ArrayList<>();
        ArrayList <Integer> reserveArrayList = new ArrayList<>();
        
        for (int lost1 : lost){
            lostArrayList.add(lost1);
        }
        for (int reserve1 : reserve){
            reserveArrayList.add(reserve1);
        }
        
        for (int lost1 : lost){
            if (reserveArrayList.contains(lost1)){
                lostArrayList.remove(Integer.valueOf(lost1));
                reserveArrayList.remove(Integer.valueOf(lost1));
            }
        }
        Integer[] array = lostArrayList.toArray(new Integer[lostArrayList.size()]);
        
        for (int lost1 : array){
            if (reserveArrayList.contains(lost1 + 1)){
                lostArrayList.remove(Integer.valueOf(lost1));
                reserveArrayList.remove(Integer.valueOf(lost1 + 1));
            }
        }
        array = lostArrayList.toArray(new Integer[lostArrayList.size()]);

        
        for (int lost1 : array){
            if (reserveArrayList.contains(lost1 - 1)){
                lostArrayList.remove(Integer.valueOf(lost1));
                reserveArrayList.remove(Integer.valueOf(lost1 - 1));
            }
        }
        
        return n - lostArrayList.size();
    }
}

최근 코드

import java.util.*;

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = 0;
        ArrayList<Integer> lostArrayList = new ArrayList<>();
        ArrayList<Integer> reserveArrayList = new ArrayList<>();
        
        for (int i : lost){
            lostArrayList.add(i);
        }
        for (int i : reserve){
            if(lostArrayList.contains(i)){
                lostArrayList.remove(Integer.valueOf(i));
            } else {
                reserveArrayList.add(i);
            }
        }
        
        Integer [] lostArray = lostArrayList.toArray(new Integer[lostArrayList.size()]);
        
        for (int i : lostArray){
            if (reserveArrayList.contains(i + 1)){
                lostArrayList.remove(Integer.valueOf(i));
                reserveArrayList.remove(Integer.valueOf(i + 1));
            }
        }
        
        lostArray = lostArrayList.toArray(new Integer[lostArrayList.size()]);
        
        for (int i : lostArray){
            if (reserveArrayList.contains(i - 1)){
                lostArrayList.remove(Integer.valueOf(i));
                reserveArrayList.remove(Integer.valueOf(i - 1));
            }
        }
        
        return n - lostArrayList.size();
    }
}