[๋ฌธ์ ]
์ค์ฝ๋น ์ง์๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋๊ฐ์ง ์์์ ์์ด์ ๋ชจ๋ ์์์ด K์ด์์ ์ค์ฝ๋น ์ง์๋ฅผ ๊ฐ์ง๊ฒ ํ๋ ค ํ ๋ ํ์ํ ์ต์ ์ฐ์ฐ ํ์๋ฅผ ๊ตฌํ๋ ๊ฒ.
[ํ์ด]
์ฒ์์ ๊ฑ STL algorithm์ sort() ํจ์๋ก scoville ๋ฒกํฐ๋ฅผ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๊ณ scoville ๋ฒกํฐ์ ๊ฐ์ฅ ์์ ๊ฐ๊ณผ ๋๋ฒ์งธ๋ก ์์ ๊ฐ์ K๋ณด๋ค ์ปค์ง ๋๊น์ง ์ฐ์ฐํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ๊ฒฐ๊ณผ๋ ํจ์จ์ฑ ํ ์คํธ 0์ .
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> scoville, int K) { // scoville: 2 ์ด์ 1,000,000 ์ดํ
int answer = 0;
int first_low_scoville = 0;
int second_low_scoville = 0;
sort(scoville.begin(), scoville.end(), greater<int>()); //๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
while(scoville.back() < K){
if(scoville.size() < 2) return -1;
first_low_scoville = scoville.back();
scoville.pop_back();
second_low_scoville = scoville.back();
scoville.pop_back();
scoville.push_back(first_low_scoville + (second_low_scoville*2));
sort(scoville.begin(), scoville.end(), greater<int>()); //๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
answer++;
}
return answer;
}
๋ฌธ์ ์ ํ์ ๋ง๊ฒ Heap ์๋ฃ๊ตฌ์กฐ(Priority queue)๋ฅผ ์ด์ฉํด์ ์๊ฐ์ ๋จ์ถ์์ผ์ผ ํ๋ค.
priority queue๋ root์ ๊ฐ์ฅ ์์ ๊ฐ์ด ๋์ด๋ ์์ ์ด์ง ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค. ์์ ์ด์ง ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ฏ๋ก ์ฝ์ /์ญ์ /ํ์ ์๊ฐ๋ณต์ก๋๋ฅผ O(logN)๋ก ์ค์ผ ์ ์๋ค. ๊ทธ๋์ ์ด ๋ฌธ์ ์ฒ๋ผ ๋น ๋ฅด๊ฒ ์ต์๊ฐ/์ต๋๊ฐ์ ์ฐพ์์ผ ํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
[์ฝ๋]
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> scoville, int K) { // scoville: 2 ์ด์ 1,000,000 ์ดํ
int answer = 0;
int first_low_scoville;
int second_low_scoville;
priority_queue<int, vector<int>, greater<int>> pq(scoville.begin(), scoville.end());
while(pq.top() < K){
if(pq.size() <=1 ) return -1;
first_low_scoville = pq.top();
pq.pop();
second_low_scoville = pq.top();
pq.pop();
pq.push(first_low_scoville + second_low_scoville*2);
answer++;
}
return answer;
}
'๐ Coding Test Study > Algorithm Problem' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++][BAEKJOON][TREE&DP] 2533๋ฒ ์ฌํ๋ง ์๋น์ค(SNS) (0) | 2021.10.04 |
---|---|
[BAEKJOON][C++][์๋ฎฌ๋ ์ด์ ] 16236๋ฒ ์๊ธฐ์์ด (0) | 2021.09.25 |
[C++][BAEKJOON][๋ธ๋ฃจํธํฌ์ค] 3085๋ฒ ์ฌํ ๊ฒ์ (0) | 2021.09.21 |
[C++][BEAKJOON][DP] ๋์ 1 (0) | 2021.09.21 |
[C++][BAEKJOON][์๋ฎฌ๋ ์ด์ ] 17144๋ฒ ๋ฏธ์ธ๋จผ์ง ์๋ ! (0) | 2021.09.19 |