https://school.programmers.co.kr/learn/courses/30/lessons/12938
๋ฌธ์ ์ค๋ช
ํ์ฌ์ Demi๋ ๊ฐ๋์ ์ผ๊ทผ์ ํ๋๋ฐ์, ์ผ๊ทผ์ ํ๋ฉด ์ผ๊ทผ ํผ๋ก๋๊ฐ ์์ ๋๋ค. ์ผ๊ทผ ํผ๋ก๋๋ ์ผ๊ทผ์ ์์ํ ์์ ์์ ๋จ์ ์ผ์ ์์ ๋์ ์ ๊ณฑํ์ฌ ๋ํ ๊ฐ์ ๋๋ค. Demi๋ N์๊ฐ ๋์ ์ผ๊ทผ ํผ๋ก๋๋ฅผ ์ต์ํํ๋๋ก ์ผํ ๊ฒ๋๋ค.Demi๊ฐ 1์๊ฐ ๋์ ์์ ๋ 1๋งํผ์ ์ฒ๋ฆฌํ ์ ์๋ค๊ณ ํ ๋, ํด๊ทผ๊น์ง ๋จ์ N ์๊ฐ๊ณผ ๊ฐ ์ผ์ ๋ํ ์์ ๋ works์ ๋ํด ์ผ๊ทผ ํผ๋ก๋๋ฅผ ์ต์ํํ ๊ฐ์ ๋ฆฌํดํ๋ ํจ์ solution์ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- works๋ ๊ธธ์ด 1 ์ด์, 20,000 ์ดํ์ธ ๋ฐฐ์ด์ ๋๋ค.
- works์ ์์๋ 50000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- n์ 1,000,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
works | n | result |
[4, 3, 3] | 4 | 12 |
[2, 1, 2] | 1 | 6 |
[1,1] | 3 | 0 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
n=4 ์ผ ๋, ๋จ์ ์ผ์ ์์ ๋์ด [4, 3, 3] ์ด๋ผ๋ฉด ์ผ๊ทผ ์ง์๋ฅผ ์ต์ํํ๊ธฐ ์ํด 4์๊ฐ๋์ ์ผ์ ํ ๊ฒฐ๊ณผ๋ [2, 2, 2]์ ๋๋ค. ์ด ๋ ์ผ๊ทผ ์ง์๋ 22 + 22 + 22 = 12 ์ ๋๋ค.
์ ์ถ๋ ฅ ์ #2
n=1์ผ ๋, ๋จ์ ์ผ์ ์์ ๋์ด [2,1,2]๋ผ๋ฉด ์ผ๊ทผ ์ง์๋ฅผ ์ต์ํํ๊ธฐ ์ํด 1์๊ฐ๋์ ์ผ์ ํ ๊ฒฐ๊ณผ๋ [1,1,2]์ ๋๋ค. ์ผ๊ทผ์ง์๋ 12 + 12 + 22 = 6์ ๋๋ค.
์ ์ถ๋ ฅ ์ #3
๋จ์ ์์ ๋์ด ์์ผ๋ฏ๋ก ํผ๋ก๋๋ 0์ ๋๋ค.
๋ด ํด๋ต
#include <string>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
long long solution(int n, vector<int> works) {
long long answer = 0;
priority_queue<int> q;
// ์ฐ์ ์์ ํ์ ์์
์ถ๊ฐ
for(const auto w:works)
q.push(w);
// n์๊ฐ๋์ ์์
๋น 1์๊ฐ ์ฐ๊ธฐ
while(n > 0)
{
if(q.empty())
break;
int cur = q.top();
q.pop();
--cur;
--n;
if(cur > 0)
q.push(cur);
}
// ์์
๋น ๋จ์ ์๊ฐ ์ ๊ณฑํด์ ํผ๋ก๋ ๊ตฌํ๊ธฐ
while(!q.empty())
{
int cur = q.top();
q.pop();
answer += cur * cur;
}
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] level.3 - ์ ์ ์ผ๊ฐํ(C++) (0) | 2023.06.03 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] level.2 - ์คํฌํธ๋ฆฌ(C++) (0) | 2023.06.02 |
[ํ๋ก๊ทธ๋๋จธ์ค] level.3 - ์ต๊ณ ์ ์งํฉ(C++) (0) | 2023.05.31 |
[ํ๋ก๊ทธ๋๋จธ์ค] level.2 - ๊ทค ๊ณ ๋ฅด๊ธฐ(C++) (0) | 2023.05.30 |
[ํ๋ก๊ทธ๋๋จธ์ค] level.2 - ๋ฌด์ธ๋ ์ฌํ(C++) (0) | 2023.05.23 |