Greedy

체육복

import java.util.*;
import java.util.stream.Collectors;

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = n - lost.length;
        List<Integer> lostList = Arrays.stream(lost)
            .boxed()
            .collect(Collectors.toList());
        List<Integer> reserveList = Arrays.stream(reserve)
            .boxed()
            .collect(Collectors.toList());
        
        Collections.sort(lostList);
        Collections.sort(reserveList);
        
        int lostIdx = 0;
        int reserveIdx = 0;
        while (lostIdx < lostList.size() 
              && reserveIdx < reserveList.size()) {
            if (lostList.get(lostIdx) == reserveList.get(reserveIdx)) {
                answer++;
                lostList.remove(lostIdx);
                reserveList.remove(reserveIdx);
                continue;
            } else if (lostList.get(lostIdx) > reserveList.get(reserveIdx)) {
                reserveIdx++;
            } else {
                lostIdx++;
            }
        }
        
        lostIdx = 0;
        reserveIdx = 0;
        
        while(lostIdx < lostList.size() 
              && reserveIdx < reserveList.size()) {
            Integer lostId = lostList.get(lostIdx);
            Integer reserveId = reserveList.get(reserveIdx);
            
            if (Math.abs(lostId - reserveId) == 1) {
                answer++;
                lostIdx++;
                reserveIdx++;
                continue;
            }
            
            if (lostId > reserveId) {
                reserveIdx++;
                continue;
            } else {
                lostIdx++;
                continue;
            }
        }
        
        return answer;
    }
}
  • 중복 삭제할 때 인덱스 조심해서 건들이기

조이스틱

큰 수 만들기

구명보트

섬 연결하기

단속카메라

Last updated