[Hackerrank] Data Structures - Dequeue 풀이

예문


https://www.hackerrank.com/challenges/java-dequeue/problem

Sample Input

6 3
5 3 5 2 3 2

Sample Ouput

3

해석

  • Dequeue
  • 각 서브배열에서 최대 유니크한 숫자를 출력하라!

풀이

  • Set 사용
    • Dequeue 를 poll 하고도 peek 한 수가 Dequeue 에 포함되지 않으면 Set 제거

제약사항

코드

public class DequeueData {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Deque<Integer> deque = new ArrayDeque<>();
        Set set = new HashSet<Integer>();
        int max = 0;
        int n = in.nextInt();
        int m = in.nextInt();

        for (int i = 0; i < n; i++) {
            int num = in.nextInt();
            deque.add(num);
            set.add(num);

            if (deque.size() == m) {
                max = Math.max(max, set.size());
                int pollNum = deque.poll();
                if (!deque.contains(pollNum)) {
                    set.remove(pollNum);
                }
            }
        }
        System.out.println(max);
    }
}