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);
}
}
'๐ป Coding Problems Solving > Greedy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ 8980] ํ๋ฐฐ (0) | 2023.06.15 |
---|---|
[BOJ 1092] ๋ฐฐ (0) | 2023.06.06 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์๊ฒฉ์์คํ (์๋ฐ java) (0) | 2023.06.05 |
[BOJ 2212] ์ผ์ (0) | 2023.06.05 |
[BOJ 13164] ํ๋ณต์ ์น์ (0) | 2023.05.30 |
์ต๊ทผ๋๊ธ