카테고리 없음
[백준/JAVA] 1700번: 멀티탭 스케줄링
imname1am
2023. 5. 22. 12:06
반응형
🔺 문제
1700번: 멀티탭 스케줄링
기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전
www.acmicpc.net
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int[] order = new int[K];
st = new StringTokenizer(br.readLine()," ");
for(int i = 0 ; i < K ; i++) {
order[i] = Integer.parseInt(st.nextToken());
}
boolean[] use = new boolean[101];
int put = 0;
int ans = 0;
for(int i = 0 ; i < K ; i++) {
int tmp = order[i];
// 콘센트가 안 꽂혀있는 경우
if(!use[tmp]) {
if(put < N) { // 콘센트 꽂을 공간이 있는 경우
use[tmp] = true;
put++;
}
else { // 콘센트 꽂을 공간이 없는 경우
ArrayList<Integer> list = new ArrayList<>(); // 현재 꽂힌 콘센트 中 나중에도 사용될 것으로 예측되는 콘센트 정보 담는 리스트
for(int j = i ; j < K ; j++) { // 현재 꽂힌 콘센트가 나중에도 사용되는지 확인
if(use[order[j]] && !list.contains(order[j])) {
list.add(order[j]); // 추후 사용 여부 확인
}
}
if(list.size() != N) { // 나중에도 사용되는 콘센트가 구멍 개수보다 작을 경우,
for(int j = 0 ; j < use.length ; j++) {
if(use[j] && !list.contains(j)) { // 그 콘센트 제거
use[j] = false;
break;
}
}
}
else { // 현재 꽂힌 모든 콘센트가 나중에도 사용될 경우,
int remove = list.get(list.size() - 1); // 가장 마지막에 사용될 콘센트 제거
use[remove] = false;
}
use[tmp] = true;
ans++;
}
}
}
bw.write(ans + "\n");
bw.flush();
bw.close();
br.close();
}
}
|
cs |
✅ 해결 아이디어
✔ 그리디
- 페이지 교체 알고리즘
🔺 다른 풀이들
- 상세 설명 굿..
백준 1700번: 멀티탭 스케줄링 (JAVA)
https://www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러
bleron.tistory.com
💬 느낀 점
페이지 교체 알고리즘을 이렇게 써먹는구나...
정처기 암기할 때 보기만 했었는데....
익숙해져보자...
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
[BOJ] 백준 1700번 : 멀티탭 스케줄링 (JAVA)
문제의 링크 : https://www.acmicpc.net/problem/17001700번: 멀티탭 스케줄링기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충
steady-coding.tistory.com
반응형