ํฐ์คํ ๋ฆฌ ๋ทฐ
https://www.acmicpc.net/problem/2461
[๋ฌธ์ ํ์ด]
์ฒ์์ ๋จ์ ์กฐํฉ์ ํตํด ๊ฐ๋ฅํ ๋ชจ๋ ์กฐํฉ์ ๊ณ์ฐํ๋ ๋ฐฉ์์ผ๋ก ํ์ดํ์์ง๋ง, ์๊ฐ์ด๊ณผ๋ก ์ธํด ๋ค์ ๋ฌธ์ ๋ฅผ ์๊ฐํด๋ณด์์ต๋๋ค.
๊ฐ๊ฐ์ ๋ฐ์ ์ ์์ ๋ฅ๋ ฅ์น๋ฅผ ์ฐ์ ์ ๋ ฌํฉ๋๋ค.
ํฌํฌ์ธํฐ ๋ฐฉ์์ฒ๋ผ ๊ฐ ๋ฐ์ index 0 ๋ถํฐ ์์ํ์ฌ, 3๊ฐ์ ๋ฐ์ค ์ต์๊ฐ์ ๊ฐ์ง๋ ๋ฐ์ index๋ฅผ ์ค๋ฅธ์ชฝ 1 ์ด๋์ํค๋ฉฐ ์ฐจ์ด๊ฐ์ ๊ตฌํฉ๋๋ค.
12 12 16 16 16 43 43 67 67 67
7 -> 17 -> 17 -> 17 -> 17 -> 17 -> 48 -> 48 -> 68 -> 68
14 14 14 15 54 54 54 54 54 77
๋ง์ง๋ง์ 1๋ฐ : 67 , 2๋ฐ : 68 , 3๋ฐ: 77 ์ผ๋, ์ต์๊ฐ์ ๊ฐ์ง๋ 1๋ฐ์ ๊ฐ์ด ๋์ด์ ์์ผ๋ฏ๋ก ๊ณ์ฐ์ด ์ข ๋ฃ๋ฉ๋๋ค.
์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉฐ ๊ตฌํด์ง ์ฐจ์ด๊ฐ์ ์ต์๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
- ์ต์๊ฐ์ ๊ณ์ ๋ฝ์๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํด ๊ตฌํํ์์ต๋๋ค.
- ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ๋ฐ์ index 0์ ๋ฃ์ด ์ด๊ธฐํ ํ ํ, poll ํ ๊ฐ์ ๋ฐ์์ ๋ค์ index๊ฐ์ ์ฐ์ ์์์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์์ต๋๋ค.
[์ ๋ต ์ฝ๋]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
class Student implements Comparable<Student>{
int index = 0;
int amount = 0;
public Student(int index, int amount) {
this.index = index;
this.amount = amount;
}
@Override
public int compareTo(Student o) {
return amount - o.amount;
}
}
public class Main {
public static int N;
public static int M;
public static PriorityQueue<Integer>[] student;
public static PriorityQueue<Student> pq = new PriorityQueue<>();
public static int min = Integer.MAX_VALUE;
public static int max = 0;
public static int answer = Integer.MAX_VALUE;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
student = new PriorityQueue[N];
for(int i=0;i<N;i++) {
student[i] = new PriorityQueue<>();
st = new StringTokenizer(br.readLine());
for(int j=0;j<M;j++) {
student[i].offer(Integer.parseInt(st.nextToken()));
}
}
for(int i=0;i<N;i++) {
int index = i;
int amount = student[i].poll();
pq.offer(new Student(index, amount));
if(amount > max) {
max = amount;
}
if(amount < min) {
min = amount;
}
}
answer = max - min;
pick();
System.out.println(answer);
}
public static void pick() {
// ์ต์๊ฐ ๊บผ๋
Student s = pq.poll();
// ๋ค์ ์ต์๊ฐ์ผ๋ก ๊ฐฑ์
min = pq.peek().amount;
if(student[s.index].isEmpty()) {
// ์ต์๊ฐ์ index = N-1
return;
}
// ์ต์๊ฐ์ด์๋ index์ ๋ค์ ๊ฐ ๋ฃ์ด์ค์ผํจ
int p = student[s.index].poll();
pq.offer(new Student(s.index, p));
if(p > max) {
max = p;
}
if(p < min) {
min = p;
}
if(answer > max - min) {
answer = max - min;
}
pick();
}
}
/*
12 16 43 67
7 17 48 68
14 15 54 77
67 68 77
10 20 30
40 50 60
70 80 90
100 110 120
30 40 70 100
์ต์๊ฐ์ธ๊ฑธ +1, ์ต์๊ฐ์ index = N-1์ด๋ฉด ๋
*/
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋ฐฑ์ค 1939๋ฒ - ์ค๋์ ํ (0) | 2022.06.13 |
---|---|
[Java] ๋ฐฑ์ค 1931๋ฒ - ํ์์ค ๋ฐฐ์ (0) | 2022.06.13 |
[Java] ๋ฐฑ์ค 2564๋ฒ - ๊ฒฝ๋น์ (0) | 2022.06.05 |
[Java] ๋ฐฑ์ค 2056๋ฒ -์์ (0) | 2022.06.05 |
[Java] ๋ฐฑ์ค 19237๋ฒ - ์ด๋ฅธ ์์ด (0) | 2022.05.29 |
- Total
- Today
- Yesterday
- ๋ฐฑ์ค node.js
- JavaScript
- git
- ์นด์นด์ค ์ธํด
- ์๋ฐ์คํฌ๋ฆฝํธ
- map
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- ๋ ์์ปฌ ํ๊ฒฝ
- TDD
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- Baekjoon
- ๋์์ธ ํจํด
- ์ด๋ถํ์
- ์ด์์ฒด์
- http
- ๋ฐฑ์ค javascript
- ๋คํธ์ํฌ
- ์ ์ญ ๋ณ์
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ํ๋กํ ์ฝ
- ์ฝ๋ฉํ ์คํธ
- ํ๋กํผํฐ
- ๋ฐฑ์ค
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ์๋ฐ
- fp
- ํฌํฌ์ธํฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |