코딩테스트/기초

33. 매출액의 종류

누리는 귀여워 2024. 12. 29. 23:24

import java.util.*;

class Main {	
    public ArrayList<Integer> solution(int n, int m, int[] arr) {
        ArrayList<Integer> answer = new ArrayList<>();
        HashMap<Integer, Integer> map = new HashMap<>();
        // 배열 1~3일까지만 map에 저장
        for(int i = 0; i < m - 1; i++) {
            map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);
        }
        int lt = 0;
        // 4일부터 시작
        for(int rt = m - 1; rt < n; rt++) {
            map.put(arr[rt], map.getOrDefault(arr[rt], 0) + 1);
            // map.size()는 key의 갯수, value는 x 
            // 4일치를 answer에 추가
            answer.add(map.size());
            // map에서 lt 위치에 값을 -1
            map.put(arr[lt], map.get(arr[lt]) - 1);
            // 0도 key가 되기때문에 0이면 삭제
            if(map.get(arr[lt]) == 0) {
                map.remove(arr[lt]);
            }
            // lt++
            lt++;
        }
        return answer;
    }

	public static void main(String[] args){
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int m = kb.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++) {
            arr[i] = kb.nextInt();
        }
        for(int x : T.solution(n, m, arr)) {
            System.out.print(x + " ");
        }
	}
}

 

 

import java.util.*;

class Main {    
    public ArrayList<Integer> solution(int n, int m, int[] arr) {
        ArrayList<Integer> answer = new ArrayList<>();
        HashMap<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < m - 1; i++) {
            map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);
        }
        int lt = 0;
        for(int rt = m - 1; rt < n; rt++) {
            map.put(arr[rt], map.getOrDefault(arr[rt], 0) + 1);
            answer.add(map.size());
            map.put(arr[lt], map.get(arr[lt]) - 1);
            if(map.get(arr[lt]) == 0) {
                map.remove(arr[lt]);
            }
            lt++;
        }
        return answer;
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int m = kb.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++) {
            arr[i] = kb.nextInt();
        }
        for(int x : T.solution(n, m, arr)) {
            System.out.print(+ " ");
        }
    }
}