알고리즘/해시

[알고리즘] 매출액의 종류 with Java

VIPeveloper 2022. 3. 16. 00:19
728x90
반응형

슬라이딩 윈도우, 투포인트 알고리즘 등이 콜라보 된 멋진 작품이다.

 

오늘 배운 것

1. 문제 풀이

. 하나씩 올라가고, 하나씩 빼주는 방식으로 진행된다.

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

public class Main {

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

        solution(k,arr);
    }

    private static void solution(int k, int[] arr) {
        int lt = 0;
        ArrayList<Integer> answer = new ArrayList<>();
        HashMap<Integer,Integer> hashMap = new HashMap<>();

        for (int i = 0; i < k - 1; i++) {
            hashMap.put(arr[i],hashMap.getOrDefault(arr[i],0)+1);
        }
        for (int i = k - 1; i < arr.length; i++) {
            hashMap.put(arr[i],hashMap.getOrDefault(arr[i],0)+1);
            answer.add(hashMap.size());
            hashMap.put(arr[lt],hashMap.getOrDefault(arr[lt],0)-1);
            if (hashMap.get(arr[lt]) == 0) {
                hashMap.remove(arr[lt]);
            }
            lt++;
        }
        for (int i = 0; i < answer.size(); i++) {
            System.out.print(answer.get(i)+" ");
        }
    }
}
728x90
반응형