01-24 00:19
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

miinsun

[BAEKJOON] ๋ฐฑ์ค€ ๊ทธ๋ฆฌ๋”” 1700 :: ๋ฉ€ํ‹ฐํƒญ ์Šค์ผ€์ค„๋ง ๋ณธ๋ฌธ

Algorithm/Baekjoon

[BAEKJOON] ๋ฐฑ์ค€ ๊ทธ๋ฆฌ๋”” 1700 :: ๋ฉ€ํ‹ฐํƒญ ์Šค์ผ€์ค„๋ง

miinsun 2022. 6. 7. 22:31

๐Ÿ’ฌ  ๋ฌธ์ œ ์„ค๋ช…

๊ธฐ์ˆ™์‚ฌ์—์„œ ์‚ด๊ณ  ์žˆ๋Š” ์ค€๊ทœ๋Š” ํ•œ ๊ฐœ์˜ ๋ฉ€ํ‹ฐํƒญ์„ ์ด์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์ค€๊ทœ๋Š” ํ‚ค๋ณด๋“œ, ํ—ค์–ด๋“œ๋ผ์ด๊ธฐ, ํ•ธ๋“œํฐ ์ถฉ์ „๊ธฐ, ๋””์ง€ํ„ธ ์นด๋ฉ”๋ผ ์ถฉ์ „๊ธฐ ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ „๊ธฐ์šฉํ’ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์–ด์ฉ” ์ˆ˜ ์—†์ด ๊ฐ์ข… ์ „๊ธฐ์šฉํ’ˆ์˜ ํ”Œ๋Ÿฌ๊ทธ๋ฅผ ๋บ๋‹ค ๊ฝ‚์•˜๋‹ค ํ•˜๋Š” ๋ถˆํŽธํ•จ์„ ๊ฒช๊ณ  ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ค€๊ทœ๋Š” ์ž์‹ ์˜ ์ƒํ™œ ํŒจํ„ด์„ ๋ถ„์„ํ•˜์—ฌ, ์ž๊ธฐ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ „๊ธฐ์šฉํ’ˆ์˜ ์‚ฌ์šฉ์ˆœ์„œ๋ฅผ ์•Œ์•„๋‚ด์—ˆ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”Œ๋Ÿฌ๊ทธ๋ฅผ ๋นผ๋Š” ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ์•ˆํ•˜์—ฌ ๋ณด๋‹ค ์พŒ์ ํ•œ ์ƒํ™œํ™˜๊ฒฝ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 3 ๊ตฌ(๊ตฌ๋ฉ์ด ์„ธ ๊ฐœ ๋‹ฌ๋ฆฐ) ๋ฉ€ํ‹ฐํƒญ์„ ์“ธ ๋•Œ,
์ „๊ธฐ์šฉํ’ˆ์˜ ์‚ฌ์šฉ ์ˆœ์„œ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์–ด์ง„๋‹ค๋ฉด, 
1. ํ‚ค๋ณด๋“œ
2. ํ—ค์–ด๋“œ๋ผ์ด๊ธฐ
3. ํ•ธ๋“œํฐ ์ถฉ์ „๊ธฐ
4.๋””์ง€ํ„ธ ์นด๋ฉ”๋ผ ์ถฉ์ „๊ธฐ
5. ํ‚ค๋ณด๋“œ
6. ํ—ค์–ด๋“œ๋ผ์ด๊ธฐ

ํ‚ค๋ณด๋“œ, ํ—ค์–ด๋“œ๋ผ์ด๊ธฐ, ํ•ธ๋“œํฐ ์ถฉ์ „๊ธฐ์˜ ํ”Œ๋Ÿฌ๊ทธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฉ€ํ‹ฐํƒญ์— ๊ฝ‚์€ ๋‹ค์Œ ๋””์ง€ํ„ธ ์นด๋ฉ”๋ผ ์ถฉ์ „๊ธฐ ํ”Œ๋Ÿฌ๊ทธ๋ฅผ ๊ฝ‚๊ธฐ ์ „์— ํ•ธ๋“œํฐ์ถฉ์ „๊ธฐ ํ”Œ๋Ÿฌ๊ทธ๋ฅผ ๋นผ๋Š” ๊ฒƒ์ด ์ตœ์ ์ผ ๊ฒƒ์ด๋ฏ€๋กœ ํ”Œ๋Ÿฌ๊ทธ๋Š” ํ•œ ๋ฒˆ๋งŒ ๋นผ๋ฉด ๋œ๋‹ค. 

 

๐Ÿ”จ  ์ž…์ถœ๋ ฅ ์˜ˆ

์ž…๋ ฅ 

  • ์ฒซ ์ค„์—๋Š” ๋ฉ€ํ‹ฐํƒญ ๊ตฌ๋ฉ์˜ ๊ฐœ์ˆ˜ N (1 ≤ N ≤ 100)๊ณผ ์ „๊ธฐ ์šฉํ’ˆ์˜ ์ด ์‚ฌ์šฉํšŸ์ˆ˜ K (1 ≤ K ≤ 100)๊ฐ€ ์ •์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค. 
  • ๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” ์ „๊ธฐ์šฉํ’ˆ์˜ ์ด๋ฆ„์ด K ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜๋กœ ์‚ฌ์šฉ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค.
  • ๊ฐ ์ค„์˜ ๋ชจ๋“  ์ •์ˆ˜ ์‚ฌ์ด๋Š” ๊ณต๋ฐฑ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋‹ค. 

 

์ถœ๋ ฅ

  • ํ•˜๋‚˜์”ฉ ํ”Œ๋Ÿฌ๊ทธ๋ฅผ ๋นผ๋Š” ์ตœ์†Œ์˜ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

 

์˜ˆ์ œ ์ž…๋ ฅ 1)

2 7
2 3 2 3 1 2 7

 

์˜ˆ์ œ ์ถœ๋ ฅ 1)

2
 

โ€‹

๐Ÿ’ป  Main.java

  • ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ „๋žต์„ ์ ์ ˆํ•˜๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š์•„ ํ’€์ด์— ์˜ค๋ž˜๊ฑธ๋ ธ๋˜ ๋ฌธ์ œ์ด๋‹ค.
    • ์ด์ „์˜ ์ž˜๋ชป ๊ตฌํ˜„ํ•œ ๋ฐฉ๋ฒ•์€ ํ˜„์‹œ์ ์—์„œ ๋‚จ์€ ์‚ฌ์šฉํšŸ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ ๊ฒŒ ๋“ฑ์žฅํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ์ค€์œผ๋กœ ํ–ˆ๋‹ค.
      • ์ด ๋ฐฉ๋ฒ•์€ ๋ฌธ์ œ์—์„œ ์›ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹˜์œผ๋กœ ์•„๋ž˜์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์ดํ•ด์ค˜์•ผํ•œ๋‹ค.
      • ๋ฐ˜๋ก€๋กœ๋Š” 
        • ์ปจ์…‰ํŠธ์˜ ์ˆ˜๊ฐ€ 4์ด๊ณ , ์‚ฌ์šฉํšŸ์ˆ˜๊ฐ€ 20์ผ ๋•Œ
        • 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 ์ˆœ์œผ๋กœ ์ž…๋ ฅ๋œ๋‹ค๋ฉด
        • ์ดํ›„์˜ ๋ชจ๋“  ๊ธฐ๊ธฐ๊ฐ€ ๊ฐ™์€ ํšŸ์ˆ˜๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋ณด๊ธฐ ์–ด๋ ต๋‹ค.
    • ๋ฌธ์ œ์— ์ ์ ˆํ•œ ๊ทธ๋ฆฌ๋”” ์ „๋žต์€, ํ˜„์‹œ์ ์—์„œ ๊ฐ€์žฅ ๋’ค์— ๋“ฑ์žฅํ•˜๋Š” ์ปจ์…‰ํŠธ๋ฅผ ๋ฐ”๊ฟ”์ค˜์•ผํ•œ๋‹ค.
/* ๋ฐฑ์ค€ ๊ทธ๋ฆฌ๋”” - 1700 :: ๋ฉ€ํ‹ฐํƒญ */
import java.util.*;
import java.io.*;

public class Main {
    
	public static void main(String[] args) throws IOException{
		Scanner sc = new Scanner (System.in);
		int n = sc.nextInt();
		int k = sc.nextInt();
		
		int[] list = new int[k];
		for(int i = 0; i < k; i++) {
			list[i] = sc.nextInt();
		}
		
		// ๋ฉ€ํ‹ฐํƒญ ์ดˆ๊ธฐ ์„ค์ •
		int[] multitap = new int[n];
		int index = 0, mtIndex = 0;
		while(mtIndex < n) {
        	// ์ด๋ฏธ ๋ฉ€ํ‹ฐํƒญ์— ์žˆ๋Š” ๊ธฐ๊ธฐ์ธ์ง€ ์กฐ์‚ฌ
			boolean isIn = false;
			for(int j = 0; j < n; j++) {
				if(multitap[j] == list[index]) {
					isIn = true;
					break;
				}
			}
			if(!isIn) {
				multitap[mtIndex++] = list[index];
			}
			index++;
		}

		int answer = 0;
		for(int i = index; i < k; i++) {
        	// ์ด๋ฏธ ๋ฉ€ํ‹ฐํƒญ์— ์žˆ๋Š” ๊ธฐ๊ธฐ์ธ์ง€ ์กฐ์‚ฌ
			boolean isIn = false;
			for(int j = 0; j < n; j++) {
				if(multitap[j] == list[i]) {
					isIn = true;
					break;
				}
			}
			
			int maxIndex = 0;
			// ๋ฉ€ํ‹ฐํƒญ์— ์—†๋Š” ๊ธฐ๊ธฐ๋ฉด ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฉ€ํ‹ฐํƒญ ๊ตํ™˜ํ•ด์ฃผ๊ธฐ
			if(!isIn) {
				int max = 0;
				for(int j = 0; j < n; j++) {
					// ๋‹ค์Œ ๊ตํ™˜๊นŒ์ง€ ํ…€์˜ ๊ธธ์ด๊ฐ€ ๊ฐ€์žฅ ๊ธด ๊ธฐ๊ธฐ ์ฐพ๊ธฐ
					int len = 0;
					for(int l = i; l < k; l++) {
						if(multitap[j] == list[l]) {
							len = l - i;
							break;
						}
					}
					
					// ๋‹ค์Œ์œผ๋กœ ๊ตํ™˜ํ•  ๊ธฐ๊ธฐ๊ฐ€ ์—†์œผ๋ฉด, ๊ฐ€์žฅ 1์ˆœ์œ„๋กœ ๋ฐ”๊ฟ”์ค˜์•ผํ•œ๋‹ค.
					if(len == 0)
						len = Integer.MAX_VALUE;
					
					// ๋ฐ”๊ฟ”์ค˜์•ผํ•  ์ธ๋ฑ์Šค๋ฅผ ๊ฐฑ์‹ 
					if(max <= len) {
						max = len;
						maxIndex = j;
					}
				}
				multitap[maxIndex] = list[i];
				answer++;
			}
		}
		
		System.out.println(answer);
        sc.close();
	}
}
Comments