[BOJ] 1700๋ฒ ๋ฉํฐํญ ์ค์ผ์ค๋ง
https://www.acmicpc.net/problem/1700
๋ฌธ์ ์ ๊ทผ
์์ ์ ์ด์์ฒด์ ์๊ฐ์ ๋ฐฐ์ ๋ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น์ทํด์ ์ฝ๊ฒ ํ ์ ์์๋ค.
๋ฉํฐํญ์ ์๋ฆฌ๊ฐ ์๊ฑฐ๋, ์ด๋ฏธ ๊ฝํ์์ ๋๋ ๊ณ ๋ คํ ๊ฒ ์์ด ๊ทธ๋ฅ ๊ฝ๊ฑฐ๋ ๋์ด๊ฐ๋ฉด ๋์ง๋ง ์๋ฆฌ๊ฐ ์์๋ ๊ณ ๋ คํด์ผ ๋ ๊ฒฝ์ฐ์ ์๊ฐ ์๋ค.
๊ฒฝ์ฐ์ ์๋ฅผ ์ ๋ฆฌํด ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฉํฐํญ์ ์๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ
- ์ด๋ฏธ ๋ฉํฐํญ์ ๊ฝํ ์๋ ๊ฒฝ์ฐ
- ๋ฉํฐํญ์ ์๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ
3.1. ์ฌ์ฉํ์ง ์์ ์ ์๊ธฐ๊ธฐ๊ฐ ๊ฝํ ์๋ ๊ฒฝ์ฐ
3.2. ๋ชจ๋ ์ ์๊ธฐ๊ธฐ๊ฐ ๋ค์ ์ฌ์ฉํ ์ ์๊ธฐ๊ธฐ์ธ ๊ฒฝ์ฐ
์ฌ์ฉํ์ง ์์ ์ ์๊ธฐ๊ธฐ๊ฐ ๊ฝํ ์์ผ๋ฉด ๊ทธ ์ ์๊ธฐ๊ธฐ๋ฅผ ์ ๊ฑฐํ๊ณ ์๋ก์ด ์ ์๊ธฐ๊ธฐ๋ฅผ ๊ฝ์ผ๋ฉด ํด๊ฒฐ๋๋ค.
๋ชจ๋ ์ ์๊ธฐ๊ธฐ๊ฐ ๋ค์ ์ฌ์ฉํ ์ ์๊ธฐ๊ธฐ์ธ ๊ฒฝ์ฐ ์ฐ์ ์์๋ฅผ ๋์ด์ ๊ฐ์ฅ ๋ฎ์ ๊ฒ์ ์ ๊ฑฐํด ์ฃผ๋ฉด ๋๋ค.
๋จผ์ ์ฌ์ฉํด์ผ ํ๋ ์ ์๊ธฐ๊ธฐ์ ์ฐ์ ์์๋ฅผ ๋๊ฒ ์ค์ ํด์ ๊ฐ์ฅ ๋์ค์ ์ฌ์ฉํ ์ ์๊ธฐ๊ธฐ๋ฅผ ์ ๊ฑฐํด ์ฃผ๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ์๋ค.
Code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class BOJ1700 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
List<Integer> orders = new ArrayList<>();
List<Integer> multitap = new ArrayList<>();
int answer = 0;
for(int i = 0; i<k; i++){
orders.add(Integer.parseInt(st.nextToken()));
}
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);
}
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Java][๋ฐฑ์ค] 1916๋ฒ ์ต์๋น์ฉ ๊ตฌํ๊ธฐ (0) | 2022.05.20 |
---|---|
[Algorithm/Java][๋ฐฑ์ค] 1806๋ฒ ๋ถ๋ถํฉ (0) | 2022.05.18 |
[Algorithm/Java][๋ฐฑ์ค] 1062๋ฒ ๊ฐ๋ฅด์นจ (0) | 2022.05.16 |
[Algorithm/Java][๋ฐฑ์ค] 2504๋ฒ ๊ดํธ์ ๊ฐ (0) | 2022.05.11 |
[Algorithm/Java][๋ฐฑ์ค] 1987๋ฒ ์ํ๋ฒณ (0) | 2022.05.08 |