https://school.programmers.co.kr/learn/courses/30/lessons/12927
1. ๋ฌธ์
์ผ๊ทผ ํผ๋ก๋๋ฅผ ์ต์ํํ๋ฉด ๋๋ค. ์ผ๊ทผ ํผ๋ก๋๋ ์ผ์ ์ฒ๋ฆฌํ๊ณ ๋จ์ ์ผ์ ์ ์์๋ค์ ๊ฐ๊ฐ ์ ๊ณฑํด์ ๋ํ ๊ฐ์ด๋ค.
works ๋ฐฐ์ด์ ์ผ์ ์์ด ์ฃผ์ด์ง๊ณ 1์๊ฐ์ 1๋งํผ์ ์ผ์ ํ๋ค๊ณ ํ ๋,
N์๊ฐ ๋์ ์ผ์ ์ฒ๋ฆฌํ์ ๋ ์ผ๊ทผ ํผ๋ก๋์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
2. ํ์ด
์ฒ์์ ์ํ์ผ๋ก ์ ๊ทผํ์์ผ๋, ์ด๋ ๊ฒ ๋๋ฉด '์ต์ํ'์ ์ผ๊ทผ ํผ๋ก๋๋ฅผ ๊ตฌํ ์ ์๋ค.
๋ด๋ฆผ์ฐจ์์ผ๋ก ์์๋ฅผ ๋ชจ๋ ์ ๋ ฌํ์ฌ ๊ฑฐ๊ธฐ์ N์๊ฐ ๋งํผ์ ๋นผ์ฃผ๋ ๊ฒ์ด ๊ฐ์ฅ ํจ์จ์ ์ผ๋ก ์ต์๊ฐ์ ๊ตฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
๋๋ฌธ์ ์ต์ํ์ ์ฌ์ฉํ๊ธฐ ์ํ์ฌ ์ฐ์ ์์ํ๋ฅผ reverseํด์ ์ฌ์ฉํ๋ค.
1. works ์์๋ค์ ํ๋ํ๋ pq์ ๋ฃ์ด์ค๋ค.
2. ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ pq์์ ๋งจ ์์ ์์๋ฅผ N๋งํผ ๋ฐ๋ณตํด์ poll() ํด์ค๋ค.
3. pollํ ๊ฐ์ด 0๋ณด๋ค ์์ ๊ฒฝ์ฐ, ์ต๋๊ฐ์ด 0์ด๋ ์๋ฏธ์ด๊ณ ๋ค์ ๋จ์ ์์๋ค ๋ํ ๋ชจ๋ 0๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค๋ ์๋ฏธ์ด๋ฏ๋ก
๋ ๋ณผ ๊ฒ๋ ์์ด ๋ฐ๋ก 0์ returnํด์ค๋ค.
4. ๋จ์์๋ ์์๊ฐ๋ค์ ๋ํด ์ ๊ณฑํ์ฌ ๋ํ ํ returnํด์ค๋ค.
3. ์ฝ๋
import java.io.*;
import java.util.*;
class Solution {
public long solution(int n, int[] works) {
long ans = 0;
PriorityQueue<Integer> pq = new PriorityQueue<> ((o1,o2)->o2-o1);
for (int work:works) {
pq.offer(work);
}
for (int i=0; i<n; i++) {
int num = pq.poll();
if (num <= 0) {
return 0;
}
pq.offer(num-1);
}
while (!pq.isEmpty()) {
ans += Math.pow(pq.poll(), 2);
}
return ans;
}
}
4. ์ฌ๋ด
์ฒ์ฒํ ํ๋์ฉ ์์ ๋๊ฐ๋ฉด ์ธ์ ๊ฐ ๋ฐ๋์ ๋์ฐฉํด์์๊ฑฐ๋ผ ๋ฏฟ๋๋ค.. ๋๋ ์ค๋ ฅ์ด ๋ง์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋ค. ๊ทธ๋ด๋ ค๋ฉด ๋ ์ด์ฌํํด์ผ์ง ์ ์ ์ ์ ์ผ์ด๋
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ๋ชจ์๊ณ ์ฌ - Java (0) | 2023.09.16 |
---|---|
[Programmers] ๋ฑ๊ตฃ๊ธธ - Java (0) | 2023.08.24 |
[Programmers] ์ต๊ณ ์ ์งํฉ - Java (0) | 2023.08.20 |
[Programmers] ์ ์์ผ๊ฐํ - Java (0) | 2023.08.19 |
[Programmers] ์ด์ค์ฐ์ ์์ํ - Java (0) | 2023.08.17 |