[프로그래머스] 코딩테스트 연습 - 위클리 챌린지 7주차 입실 퇴실

uoahy·2021년 9월 16일
0
post-thumbnail

Solution.java

import java.util.*;

class Solution {
    public int[] solution(int[] enter, int[] leave) {
        int[] answer = {};
        
        int num = enter.length;
        
        answer = new int[num];
        
        int[] idx = new int[num];
        
        for (int i = 0; i < num; i++) {
            idx[leave[i] - 1] = i;
        }
        
        Integer e[] = Arrays.stream(enter).boxed().toArray(Integer[]::new);
        Integer l[] = Arrays.stream(leave).boxed().toArray(Integer[]::new);
        
        for (int i = 0; i < num; i++) {
            HashSet<Integer> hs = new HashSet<>(Arrays.asList(Arrays.copyOfRange(l, 0, idx[enter[i] - 1])));
            int j = num - 1;
            while (i < j) {
                if (hs.contains(enter[j])) break;
                j--;
            }
            
            answer[enter[i] - 1] += j - i;
            while (i < j) {
                answer[enter[j--] - 1]++;
            }
        }
        
        return answer;
    }
}

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

0개의 댓글