개발놀이터

4-3. 매출액의 종류 본문

기타/코딩테스트

4-3. 매출액의 종류

마늘냄새폴폴 2023. 2. 23. 07:11

 

package HashMap그리고TreeSet4장.매출액의종류4다시3.my;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class Main {

    /**
     * sliding window 와 HashMap 을 섞어서 사용했다. 
     * 피드백 X
     */

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int date = kb.nextInt();
        int length = kb.nextInt();
        int[] arr = new int[date];
        for (int i = 0; i < date; i++) {
            arr[i] = kb.nextInt();
        }

        for (int x : solution(date, length, arr)) {
            System.out.print(x + " ");
        }
    }

    private static ArrayList<Integer> solution(int date, int length, int[] arr) {
//        String answer = "";
        ArrayList<Integer> answer = new ArrayList<>();
        int start = 0, end = length;
        HashMap<Integer, Integer> map = new HashMap<>();

        for (int i = 0; i < end; i++) {
            map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);
        }

        answer.add(map.size());

        while (end < date) {
            map.put(arr[end], map.getOrDefault(arr[end], 0) + 1);
            end++;

            map.put(arr[start], map.get(arr[start]) - 1);
            if (map.get(arr[start]) == 0) {
                map.remove(arr[start]);
            }
            start++;

            answer.add(map.size());
        }

        return answer;
    }
}

'기타 > 코딩테스트' 카테고리의 다른 글

4-5. K번째로 큰 수  (0) 2023.02.23
4-4. 모든 아나그램 찾기  (0) 2023.02.23
4-2. 아나그램  (0) 2023.02.23
4-1. 학급회장  (0) 2023.02.23
3장 주요 개념 및 복습  (0) 2023.02.18