1. ๋ฌธ์ œ : https://www.acmicpc.net/problem/1700

 

2. ํ’€์ด

๊ด€๊ฑด์€ ๋ฉ€ํ‹ฐํƒญ ์ˆซ์ž ์ค‘ ๋’ค์— ๋‚จ์•„์žˆ๋Š” orders ์ค‘์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์ˆซ์ž๋ฅผ ์ฐพ์•„์„œ ๋ฉ€ํ‹ฐํƒญ์—์„œ ์ œ์™ธ์‹œ์ผœ์ฃผ๋Š” ๋ถ€๋ถ„

 

3. ์ฝ”๋“œ

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ๋ฉ€ํ‹ฐํƒญ์Šค์ผ€์ค„๋ง {
    static int n,k;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        k = sc.nextInt();

        List<Integer> orders = new ArrayList<>();
        List<Integer> multitap = new ArrayList<>();

        int answer = 0;
        for(int i = 0; i<k; i++){
            orders.add(sc.nextInt());
        }
        while(!orders.isEmpty()){
            int order = orders.remove(0);
            // ๋ฉ€ํ‹ฐํƒญ์—์„œ ์ด๋ฏธ ์‚ฌ์šฉ์ค‘์ธ ๊ฒฝ์šฐ
            if(multitap.contains(order)) continue;
            // ๋ฉ€ํ‹ฐํƒญ์— ์ž๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
            if(multitap.size() < n){
                multitap.add(order);
            } else {
                // ๋ฉ€ํ‹ฐํƒญ์— ์ž๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
                boolean flag = false;
                int idx = -1;
                int maxIdx = -1;
                answer++;
                for(int i = 0; i<multitap.size(); i++){
                    if(!orders.contains(multitap.get(i))){
                        // ๋‹ค์‹œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ „์ž๊ธฐ๊ธฐ์ธ ๊ฒฝ์šฐ
                        flag = true;
                        multitap.remove(i);
                        multitap.add(order);
                        break;
                    } else {
                        if(orders.indexOf(multitap.get(i))> idx){
                            // ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ „์ž๊ธฐ๊ธฐ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐ
                            idx = orders.indexOf(multitap.get(i));
                            maxIdx = i;
                        }
                    }
                }
                if(!flag){
                    // ๋ชจ๋“  ์ „์ž๊ธฐ๊ธฐ๊ฐ€ ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ „์ž๊ธฐ๊ธฐ์ธ ๊ฒฝ์šฐ
                    // ๊ณ„์‚ฐํ•œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐ
                    multitap.remove(maxIdx);
                    multitap.add(order);
                }
            }
        }
        System.out.println(answer);
    }
}
  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ๋„ค์ด๋ฒ„ ๋ฐด๋“œ์— ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜ค์Šคํ† ๋ฆฌ ๊ณต์œ ํ•˜๊ธฐ