[BOJ] 1700. 멀티탭 스케줄링
15 Apr 2026
Reading time ~1 minute
풀이
import java.util.Scanner;
public class Main {
static Scanner sc=new Scanner(System.in);
static int N=sc.nextInt();
static int K=sc.nextInt();
static int sub[]=new int[K];
static boolean used[]=new boolean[K+1];
public static void main(String[] args) {
for (int i = 0; i < K; i++) {
sub[i]=sc.nextInt();
}
int ans=0;
int cnt=-1;
int count=0;
for (int i = 0; i<K; i++) {
if(!used[sub[i]]) {
used[sub[i]]=true;
count++;
}
cnt++;
if(count==N) break;
}
while(cnt++<K-1) {
if(used[sub[cnt]]) {
continue;
}else {
used[check(cnt)]=false;
used[sub[cnt]]=true;
ans++;
}
}
System.out.println(ans);
}
public static int check(int cur) {
int max=0;
int val=0;
for (int i = 0; i < used.length; i++) {
if(!used[i]) continue;
int tmp=0;
for (int j = cur; j < sub.length; j++) {
if(sub[j]==i) {
tmp=j;
break;
}
}
if(tmp>max) {
max=tmp;
val=i;
}
if(tmp==0) {
val=i;
break;
}
}
return val;
}
}