๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/21773)
< ๊ฐํฌ์ ํ๋ก์ธ์ค 1>
๋ฌธ์ ํ์ด
์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
์ฐ์ ์์ ๊ฐ์ด ์ ์ผ ํฐ ํ๋ก์ธ์ค ์ค id ๊ฐ ๊ฐ์ฅ ์์ ํ๋ก์ธ์ค๋ฅผ ๊ณจ๋ผ์ค๋๋ค. 1์ด๊ฐ ์ง๋ ํ ์ด ํ๋ก์ธ์ค๋ฅผ ์ ์ธํ ๋๋จธ์ง ํ๋ก์ธ์ค๋ค์ ์ฐ์ ์์๊ฐ 1 ์์นํ๋ค๊ณ ํ์ง๋ง ๋๋จธ์ง๋ฅผ ๋ค 1 ์์น์ํค๊ธฐ์๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ค ๋ฐ๋๋ก ๊ณจ๋ผ์ค ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ 1 ์ค์ฌ์ค๋๋ค. ํ๋ก์ธ์ค์ ์คํ ์๊ฐ๋ 1 ์ค์ธ ํ ์๊ฐ์ด 0์ด ์๋๋ผ๋ฉด ๋ค์ ์ฐ์ ์์ ํ์ ์ถ๊ฐํด ์ค๋๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
import java.io.InputStreamReader;
public class _21773_ { // ๊ฐํฌ์ ํ๋ก์ธ์ค 1
public static class Process implements Comparable<Process> {
int id;
int time;
int level;
public Process(int id, int time, int level) {
this.id = id;
this.time = time;
this.level = level;
}
@Override
public int compareTo(Process o) {
if (level == o.level)
return id - o.id;
return o.level - level;
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(bf.readLine());
int t = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
PriorityQueue<Process> queue = new PriorityQueue<>();
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
queue.add(new Process(a, b, c));
}
for (int i = 0; i < t; i++) {
if (queue.isEmpty())
break;
Process process = queue.poll();
bw.write(process.id + "\n");
process.time -= 1;
if (process.time > 0) {
process.level -= 1;
queue.add(process);
}
}
bw.flush();
}
}
Main
๋ณ์)
Process : id, ์๊ฐ(time), ์ฐ์ ์์(level) / ์ ๋ ฌ : ์ฐ์ ์์ ๋ด๋ฆผ์ฐจ์ > id ์ค๋ฆ์ฐจ์
t : t ์ด
n : ํ๋ก์ธ์ค ๊ฐ์
queue : Process ์์ผ๋ก ์ ๋ ฌํ๋ ์ฐ์ ์์ ํ
a : id
b : ์คํ์ ๋ง์น๋๋ฐ ํ์ํ ์๊ฐ
c : ์ด๊ธฐ ์ฐ์ ์์
- ์๊ฐ(t)๊ณผ ํ๋ก์ธ์ค ๊ฐ์(n) ์ ๋ ฅ
- ํ๋ก์ธ์ค์ id(a), ์คํ์ ๋ง์น๋๋ฐ ํ์ํ ์๊ฐ(b), ์ด๊ธฐ ์ฐ์ ์์(c)๋ฅผ ์ ๋ ฅ๋ฐ์ qeuue์ ์ ์ฅ
- t์ด๋งํผ ๋ฐ๋ณต
: ์คํ ์๊ฐ์ด ๋จ์ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ์ข ๋ฃ
: queue์์ ์ฐ์ ์์ ๊ฐ์ด ์ ์ผ ํฌ๊ณ id๊ฐ ๊ฐ์ฅ ์์ ํ๋ก์ธ์ค ๋ฝ๊ธฐ
: ํ๋ก์ธ์ค ์๊ฐ์ 1์ด ์ค์ธ ํ ์์ง ์๊ฐ์ด ๋จ์๋ค๋ฉด ์ฐ์ ์์๋ฅผ 1 ์ค์ธ ํ queue์ ์ ์ฅ
- ๋ต ์ถ๋ ฅ
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 25418_์ ์ a๋ฅผ k๋ก ๋ง๋ค๊ธฐ (0) | 2023.07.27 |
---|---|
[Baekjoon] 12852_1๋ก ๋ง๋ค๊ธฐ 2 (0) | 2023.07.25 |
[Baekjoon] 21939_๋ฌธ์ ์ถ์ฒ ์์คํ Version 1 (0) | 2023.07.24 |
[Baekjoon] 22252_์ ๋ณด ์์ธ ํธ์ (0) | 2023.07.21 |
[Baekjoon] 19640_ํ์ฅ์ค์ ๊ท์น (0) | 2023.07.20 |