๐ŸŒท๐ŸŒผ๋ชจ์—ฌ๋ด์š” ๊ฐœ๋ฐœ์˜์ˆฒ๐ŸŒท๐ŸŒผ

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ๋งค์ถœ์•ก์˜ ์ข…๋ฅ˜ ๋ณธ๋ฌธ

๊ฐœ๋ฐœ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด JAVA

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ๋งค์ถœ์•ก์˜ ์ข…๋ฅ˜

์š”์ผ์ด 2021. 5. 20. 02:20
๋ฐ˜์‘ํ˜•

์„ค๋ช…

ํ˜„์ˆ˜์˜ ์•„๋น ๋Š” ์ œ๊ณผ์ ์„ ์šด์˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์ˆ˜์•„๋น ๋Š” ํ˜„์ˆ˜์—๊ฒŒ N์ผ ๋™์•ˆ์˜ ๋งค์ถœ๊ธฐ๋ก์„ ์ฃผ๊ณ  ์—ฐ์†๋œ K์ผ ๋™์•ˆ์˜ ๋งค์ถœ์•ก์˜ ์ข…๋ฅ˜๋ฅผ

๊ฐ ๊ตฌ๊ฐ„๋ณ„๋กœ ๊ตฌํ•˜๋ผ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ N=7์ด๊ณ  7์ผ ๊ฐ„์˜ ๋งค์ถœ๊ธฐ๋ก์ด ์•„๋ž˜์™€ ๊ฐ™๊ณ , ์ด๋•Œ K=4์ด๋ฉด

20 12 20 10 23 17 10

๊ฐ ์—ฐ์† 4์ผ๊ฐ„์˜ ๊ตฌ๊ฐ„์˜ ๋งค์ถœ์ข…๋ฅ˜๋Š”

์ฒซ ๋ฒˆ์งธ ๊ตฌ๊ฐ„์€ [20, 12, 20, 10]๋Š” ๋งค์ถœ์•ก์˜ ์ข…๋ฅ˜๊ฐ€ 20, 12, 10์œผ๋กœ 3์ด๋‹ค.

๋‘ ๋ฒˆ์งธ ๊ตฌ๊ฐ„์€ [12, 20, 10, 23]๋Š” ๋งค์ถœ์•ก์˜ ์ข…๋ฅ˜๊ฐ€ 4์ด๋‹ค.

์„ธ ๋ฒˆ์งธ ๊ตฌ๊ฐ„์€ [20, 10, 23, 17]๋Š” ๋งค์ถœ์•ก์˜ ์ข…๋ฅ˜๊ฐ€ 4์ด๋‹ค.

๋„ค ๋ฒˆ์งธ ๊ตฌ๊ฐ„์€ [10, 23, 17, 10]๋Š” ๋งค์ถœ์•ก์˜ ์ข…๋ฅ˜๊ฐ€ 3์ด๋‹ค.

N์ผ๊ฐ„์˜ ๋งค์ถœ๊ธฐ๋ก๊ณผ ์—ฐ์†๊ตฌ๊ฐ„์˜ ๊ธธ์ด K๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์ฒซ ๋ฒˆ์งธ ๊ตฌ๊ฐ„๋ถ€ํ„ฐ ๊ฐ ๊ตฌ๊ฐ„๋ณ„

๋งค์ถœ์•ก์˜ ์ข…๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

์ž…๋ ฅ

์ฒซ ์ค„์— N(5<=N<=100,000)๊ณผ K(2<=K<=N)๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„์— N๊ฐœ์˜ ์ˆซ์ž์—ด์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๊ฐ ์ˆซ์ž๋Š” 500์ดํ•˜์˜ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.

์ถœ๋ ฅ

์ฒซ ์ค„์— ๊ฐ ๊ตฌ๊ฐ„์˜ ๋งค์ถœ์•ก ์ข…๋ฅ˜๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ์ž…๋ ฅ ์ถœ๋ ฅ
7 4
20 12 20 10 23 17 10
3 4 4 3

 

 

1. ๋‚ด๊ฐ€ ํ‘ผ ๋‹ต

import java.util.*;
import java.io.*;

public class Main {
	
	public void solution(int day, int k, int[] array) {
	
		HashMap<Integer, Integer> count = new HashMap<>();
		
		int lt = 0;
		int rt = k-1;
		
		for(int i=0; i<array.length; i++) {
			// key์— ์ˆซ์ž์™€ ํšŸ์ˆ˜๋ฅผ ๋„ฃ๋Š”๋‹ค
			if(count.containsKey(array[i])) {
				count.put(array[i], count.get(array[i]).intValue() + 1);
			}else {
				count.put(array[i], 1);
			}
			
			if(i==rt) {
				System.out.print(count.size() + " ");
				count.put(array[lt], count.get(array[lt]).intValue() - 1);
                // ๋งŒ์•ฝ ํšŸ์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด ์•„์˜ˆ ํ‚ค๋ฅผ ์ง€์›Œ๋ฒ„๋ฆฌ๊ธฐ
				if(count.get(array[lt]).intValue() == 0) {
					count.remove(array[lt]);
				}
				lt++;
				rt++;
			}
			
		}
		
						
	}

	public static void main(String args[]) {
        Main main = new Main();
		Scanner in= new Scanner(System.in);
        int day = in.nextInt();
        int k = in.nextInt();
		int[] array = new int[day];
        for(int i=0; i<day; i++) {
			array[i] = in.nextInt(); 
        }
		
        main.solution(day, k, array);
    }

}
Comments