๋ฌธ์
์ฝ๋
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int solution(vector<int> people, int limit) {
int answer = 0;
priority_queue<int,vector<int>,greater<int>> pq; // ์ต์ ํ
sort(people.begin(),people.end(),greater<>()); // ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
for(int i=0; i<people.size(); i++){
if(pq.empty()) pq.push(people[i]);
else{
if(people[i]+pq.top()<=limit){
pq.pop();
answer++;
}
else pq.push(people[i]);
}
}
return answer+pq.size();
}
ํ์ด(20๋ถ)
๊ตฌ๋ช ๋ณดํธ๋ ์์์ ํ ๋ฒ์ ์ต๋ 2๋ช ์ฉ๋ฐ์ ํ ์ ์๋ค.๋ผ๋ ์กฐ๊ฑด์ ์ฝ์ง ์๊ณ , ๋ฌด๊ฒ ์ ํ๋ง ์ ์ฝ์ ์ฃผ์ด ๊ตฌํ๋ค๊ฐ ๊ณ์ 75์ ๋ง ๋ ์ ์๊ฐ์ ์๋นํ์ต๋๋ค. -๋ฌธ์ ๋ฅผ ์ ๋๋ก ์ฝ์์๋ค-
people | limit | return |
[70, 50, 80, 50] | 100 | 3 |
์ ์ ๋ ฅ์ ์์๋ก ํ๋ฒ ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค.
- people ๋ฐฐ์ด์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค. [80, 70, 50, 50]
- heap์ ์ต์ ํ์ด๋ค.
- ํ์ฌ heap์ด ๋น์๊ธฐ ๋๋ฌธ์ ํ๋๋ฅผ ๋ฃ๋๋ค pq = [80, ]
- 70์ pq์ top์ธ 80๊ณผ ๋ํ์ ๋ ๋ฌด๊ฒ ์ ํ 100์ ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ pq์ pushํ๋ค. pq = [70, 80, ]
- 50์ pq์ top์ธ 70๊ณผ ๋ํ์ ๋ ๋ฌด๊ฒ์ ํ 100์ ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ pq์ pushํ๋ค. pq=[50, 70, 80, ]
- 50์ pq์ top์ธ 50๊ณผ ๋ํ์ ๋ ๋ฌด๊ฒ์ ํ 100 ์ดํ๋ฅผ ๋ง์กฑํ๊ณ , ํ ๋ณดํธ์ ๋ ๋ช ์ด์์ ํ์นํ ์ ์๊ธฐ์ pop์ ํ๊ณ ๊ตฌ๋ช ๋ณดํธ์ ๊ฐ์๋ฅผ ++ํด์ค๋ค. pq = [70, 80]
- ์ต์ข ์ ์ผ๋ก answer์ ๋จ์์๋ ์ฌ๋์ธ pq์ ์ฌ์ด์ฆ๋ฅผ ๋ํด์ฃผ๋ฉด ํ์ํ ๊ตฌ๋ช ๋ณดํธ์ ๊ฐ์๊ฐ ๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ํ๋ก๊ทธ๋๋จธ์ค(Programmers)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++] ํ๋ก๊ทธ๋๋จธ์ค - [3์ฐจ] ํ์ผ๋ช ์ ๋ ฌ(Level 2) (0) | 2022.05.04 |
---|---|
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์ ํ์ ์๊ฐ ์ด๋(Level 2) (0) | 2022.05.01 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ(Level 2) (0) | 2022.04.26 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์ซ์์ ํํ(Level 2) (0) | 2022.04.24 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ํฐ ์ ๋ง๋ค๊ธฐ(Level 2) (0) | 2022.04.24 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ๊ดํธ ํ์ ํ๊ธฐ(Level 2) (0) | 2022.04.19 |
๋๊ธ