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