
๐ ๋ฌธ์

๐ฑ ์์ด๋์ด
๋ฐ๋๋ผ์ธ ๋ณ ๊ฐ์ฅ ์ต์ ์ ๊ฐ์ ์ ํํ์ฌ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ ๋ฌธ์ ! ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค!
์ ๋ ฌ์๋๊ฐ ๋น ๋ฅธ ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํด ๋ณด์!
๋ฌธ์ ์์ฒด๋ ์ดํดํ๊ธฐ๋ ์ฝ๊ณ ์ด๋ ต์ง ์์๋ค. ๋๋ถ์ ๊ทธ๋ฆฌ๋, ์ฐ์ ์์ํ๋ฅผ ์ด์ฉํ๋ฉด ๋๊ฒ ๋ค๋ ์๊ฐ๋ ๋นจ๋ฆฌ ๋์ถํด ๋ด์๋ ๋ฌธ์ ์ด๋ค.
ํ์ง๋ง ๊น๊ฒ ์๊ฐ์ ํด์ผ ํ๋ ๋ฌธ์ ์๋ค ใ ๋ค์ ์์ ๋ฅผ ๋ณด์
๋ฐ๋ก 1)
4
1 50
2 30
3 60
3 70
ans = 180
๊ฐ์ฅ ์ฒ์ ๊ตฌํํ์ ๋ ๋ฐ๋๋ผ์ธ์ 1 ~ N๊น์ง ์ค๋ฆ์ฐจ์ ๋ฐ๋๋ผ์ธ๋ณ ์ต์ ๊ฐ์ ๊ตฌํ๋ ํ์์ผ๋ก ํ์์ง๋ง
๊ฒฐ๊ณผ๋ 150์ด ๋์๋ค. 50 + 30 + 70 ์ด๋ ๊ฒ ์ปต๋ผ๋ฉด์ ํ๋ํ ๊ฒ์ด๋ค.
ํ์ง๋ง ๋ฌธ์ ์ ์ ๋ต์ 50 + 60 + 70 = 180 ์ด๋ค. ์ฆ ๊ฐ์ฅ ๋ฎ์ ๋ฐ๋๋ผ์ธ์ด ํญ์ ์ต์ ์ ๊ฐ์ ๋ณด์ฅํ์ง ์๊ธฐ ๋๋ฌธ์
N ~ 1๊น์ง ๋ฐ๋๋ผ์ธ์ด ํฐ ์๋ถํฐ ๋ฎ์ ์์ผ๋ก ์ต์ ๊ฐ์ ์ฐพ์์ผ ํ๋ค.
์ ๋ฆฌ๋ฅผ ํ์๋ฉด ์ด๋ ๋ค
1. ๋ฐ๋๋ผ์ธ์ ๊ทธ๋ฆฌ๋ ๋ฐฉ์์ด ์๋ ๋ค์ ๋์ฌ ๊ฐ๊น์ง ํฌํจํด์ ์ต์ ๊ฐ์ ์ฐพ์์ผ ํ๋ค.
2. ์ปต๋ผ๋ฉด ๊ฐ์๋ ๊ทธ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ฅ ์ต๋๊ฐ๋ง ๊ฐ์ ธ์ค๋ฉด ๋๋ค.
์ด์ ๊ตฌํ์ ํด๋ณด์!
๐ฑ ์ฝ๋ ๋ฐ ํ์ด
| public class Main { | |
| public static PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder()); | |
| public static PriorityQueue<node> box = new PriorityQueue<node>(); | |
| public static class node implements Comparable<node> { | |
| int dl, ramen; | |
| public node(int dl, int ramen) { | |
| this.dl = dl; | |
| this.ramen = ramen; | |
| } | |
| @Override | |
| public int compareTo(node o) { | |
| return o.dl - dl; | |
| } | |
| } | |
| public static void main(String[] args) throws IOException { //์กฐ๊ฑด ์ ๋ ฅ | |
| BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
| StringTokenizer st; | |
| int N = Integer.parseInt(br.readLine()); | |
| long cnt = 0; | |
| for (int i = 0; i < N; i++) { | |
| st = new StringTokenizer(br.readLine(), " "); | |
| int a = Integer.parseInt(st.nextToken()); | |
| int b = Integer.parseInt(st.nextToken()); | |
| // box ์ฐ์ ์์ ํ์ ๋ฐ๋๋ผ์ธ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค. | |
| box.offer(new node(a, b)); | |
| } | |
| // ๋ฐ๋๋ผ์ธ ๋ฒ์ ์ง์ . | |
| int deadLine = box.peek().dl; | |
| while (deadLine !=0) { | |
| // ํ์ฌ deadLine ๊ฐ ๊ธฐ์ค์ผ๋ก ํด๋น๋๋ ์ปต๋ผ๋ฉด pq ์ฐ์ ์์์ ์ ๋ ฅ | |
| while (!box.isEmpty() &&deadLine == box.peek().dl) { | |
| pq.offer(box.poll().ramen); | |
| } | |
| // pq๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ๋ง์ ์ปต๋ผ๋ฉด cnt์ ๋ํ๊ธฐ. | |
| if (!pq.isEmpty()) { | |
| cnt += pq.poll(); | |
| } | |
| // ํ๋์ ๋ฌธ์ ๋ฅผ ํ์๊ธฐ ๋๋ฌธ์ deadLine ๋ฒ์๋ฅผ ์ขํ์ค๋ค. | |
| deadLine--; | |
| } | |
| System.out.print(cnt); | |
| } | |
| } |
1. ๋ฐ๋๋ผ์ธ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก pq์ ์ ๋ ฅํ๊ธฐ ์ํด box ์ฐ์ ์์ ํ์ ๋ด๋๋ค
2. ํ์ฌ deadLine์ ํด๋นํ๋ ๋ฌธ์ ๋ค ์ ๋ ฅ๋ฐ๊ณ ๊ทธ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ์ต๋๊ฐ ๋์ถ!
3. deadLine์ -1์ฉ ํด์ฃผ๋ฉด์ ์ต๋๊ฐ ๋์ถ
4. deadLine ํด๋นํ๋ ๋ฌธ์ ๊ฐ box.peek์ ์๋ค๋ฉด 2๋ฒ์ผ๋ก ๋ณต๊ท.
๐ฑ ๋๋ ์

๋ณต์กํ ๋ฌธ์ ๋ ์๋์์ง๋ง ๋ฐ๋ก๊ฐ ์์๋ค๋ฉด ํ๊ธฐ ํ๋ค์์ ๊ฒ ๊ฐ๋ค.
๊ณจ๋ ์์ ๋ฌธ์ ๋ ์๋ก์ด ๊ฐ๋ ์ ๊ฐ์ง๊ณ ํธ๋ ๋ฌธ์ ๋ค์ด ๋ง๋ค ํนํ ์๋ฃ๊ตฌ์กฐ ๋ฌธ์ ๊ฐ ๊ทธ๋ฐ ๊ฒ ๊ฐ๋ค ใ ใ
ํ๋์ ๊ทธ๋ํ ํ์ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ๋ฏธ์์๋๋ฐ ์์ฆ์ ์๋ฃ๊ตฌ์กฐ๋ฌธ์ ํธ๋ ๊ฒ ๋ ์ฌ๋ฏธ์๋ค ใ ใ ์๋ก์ด ์์ด๋์ด๋ฅผ ๋ฐฐ์ฐ๋ ๋๋์ด๋ค ใ
'Algorithm > - Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [BOJ] ๋ฐฑ์ค 10830 ํ๋ ฌ ์ ๊ณฑ (JAVA) (1) | 2024.03.13 |
|---|---|
| [BOJ] ๋ฐฑ์ค 6198 ์ฅ์ ์ ์ ๊พธ๋ฏธ๊ธฐ (JAVA) (2) | 2024.03.05 |
| [BOJ] ๋ฐฑ์ค 1976 ์ฌํ ๊ฐ์ (JAVA) (4) | 2024.02.26 |
| [BOJ] ๋ฐฑ์ค 11657 ํ์๋จธ์ (JAVA) (0) | 2024.02.20 |
| [BOJ] ๋ฐฑ์ค 17836 ๊ณต์ฃผ๋์ ๊ตฌํด๋ผ! (JAVA) (2) | 2024.02.13 |
๋๋ง์ ๊ฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค!
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!