๋ผ๋ฉด๊ณต์ฅ
https://programmers.co.kr/learn/courses/30/lessons/42629#
์ฝ๋
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<pair<int, int>> node;
int solution(int stock, vector<int> dates, vector<int> supplies, int k) {
int answer = 0;
int day = stock;
int size = dates.size();
for (int i = 0; i < size; i++) {
node.push_back(make_pair(dates[i], supplies[i]));
}
while (day < k) {
int idx = 0;
int max_idx = 0;
while (idx < node.size() && node[idx].first <= day) {
if (node[idx].second > node[max_idx].second) {
max_idx = idx;
}
idx++;
}
day += node[max_idx].second;
answer++;
node.erase(node.begin() + max_idx);
}
return answer;
}
int main() {
int stock = 7;
vector<int> dates = { 3, 10, 12, 19 };
vector<int> supplies = {3, 9, 12, 11 };
int k = 30;
cout << solution(stock, dates, supplies, k); //3
}
์ค๋ช
์๋ฃ๊ตฌ์กฐ ํ ๋ฌธ์ ์ ์ํด์๋ ๋ฌธ์ ์ด๋ค. ์ด๋ฏธ dates๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด์๋ค๊ณ ๋ฌธ์ ์ ๊ธฐ์ฌ๋์ด์์ผ๋ฏ๋ก, ์ฐจ๋ก๋ก vector์ ๋ฃ์ด์ฃผ๋ฉด ๋ถ๋ถ ์ ๋ ฌ ๋ฟ๋ง ์๋๋ผ ์ ์ฒด ์ ๋ ฌ์ด ๋์ด์๋ ํ ๊ตฌ์กฐ๋ฅผ vector๋ก ๋ํ๋ธ ์ ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ํด๋น vector๋ dates์ ๋ํ ์ต์ ํ์ด ๋๋ค.
์ฌ์ค ์ฌ๊ธฐ์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ฐ๋ผ ๋ด๋ ค๊ฐ๋ฉด์ ๋น๊ต๋ฅผ ํ์ผ๋ฉด ํ์ ์ฌ์ฉํ์๋ค๊ณ ์ฐ๊ธธ์๋ผ๋ ์๊ฒ ์ง๋ง... index๋ฅผ ํ๋์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ฌ์ฉํ์๊ธฐ ๋๋ฌธ์ ํ์ ์ฌ์ฉํ๋ค๊ณ ๋ณผ ์๊ฐ ์๋ค. ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋์ด์๋ ๋ฐฐ์ด์ ์ฌ์ฉํ ๊ฒ ๋ฟ์ด๋ค.
์ด์จ๋ ๋ฌธ์ ํ์ด๋ฅผ ํด๋ณด๋ฉด, ์ฐ์ ์ฒ์ ์ฃผ์ด์ง stock๋ฅผ day์ ์ ์ฅํ๋ค. node์๋ dates ์ค๋ฆ์ฐจ์์ผ๋ก (dates, supplies)๊ฐ ์ ์ฅ๋์ด์๋ค.
int day = stock;
int size = dates.size();
for (int i = 0; i < size; i++) {
node.push_back(make_pair(dates[i], supplies[i]));
}
dates
๊ฐ day๋ฅผ ๋์ง ์์ผ๋ฉด์ supply
๊ฐ ๊ฐ์ฅ ํฐ ๋ ์ง๋ฅผ ์ฐพ๋๋ค. ์ฐพ์์ผ๋ฉด ํ์ฌ ๊ฐ์ง๊ณ ์๋ ๋ฐ๊ฐ๋ฃจ๊ฐ ์์ง๋๋ ๋ ์ง์ธ day
์ supply
๋ฅผ ๋ํด์ฃผ๊ณ , ํด๋น dates
๋ฅผ node
vector์์ ์ญ์ ํ๋ค. ์ด ๋๋ง๋ค answer
์ 1์ฉ ๋ํด์ค๋ค.
while (idx < node.size() && node[idx].first <= day) {
if (node[idx].second > node[max_idx].second) {
max_idx = idx;
}
idx++;
}
day += node[max_idx].second;
answer++;
node.erase(node.begin() + max_idx);
์ด๋ฐ์์ผ๋ก ๋ฐ๋ณตํ๋ค๋ณด๋ฉด ์ฃผ์ด์ง k
๋ณด๋ค day
๊ฐ ๋ ์ปค์ง๋ ์๊ฐ์ด ์ค๋๋ฐ, ๊ทธ ๋์ answer
๊ฐ ๋ฌธ์ ์ ์ ๋ต์ด๋ค.
while (day < k) {
//...
}
return answer;
์ฑ์ ๊ฒฐ๊ณผ
๋ค๋ฅธ ์ฌ๋์ ํ์ด
ํ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฑธ ๊ฐ๋ ์ ๋ฆฌ์์ ํ์ง๋ง ์๊ฐํด๋ด์ง ๋ชปํ๋ค. STL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฐ์ ์์ํ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ ์ฝ๋๋ค์ด ๋ง๋ค.
ํ๋ฃจ๊ฐ ์ง๋ ๋๋ง๋ค stock์ด ๊ฐ์ํ๋ ๊ฑธ ๋ณด์ด๊ธฐ ์ํด for๋ฌธ์ผ๋ก k๋งํผ์ ๋ฐ๋ณตํ์๋ค. dates์ ํด๋นํ๋ ๋ ์ด ์ค๋ฉด supply๋ฅผ ์ฐ์ ์์ํ์ ์ ์ฅํด๋ ํ, stock์ด 0์ด ๋ ๋ ๋ถ๋ฌ์์ stock์ ๋ํด์ค๋ค. ์ฐ์ ์์ํ์ ์ ์ฅํด๋ ๋๋ถ์ supply๊ฐ ํฐ ์์๋๋ก ๋น ์ ธ๋์ค๊ฒ ํ ์ ์๋ค.
'Algorithm ๋ฌธ์ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++] ํ๋ก๊ทธ๋๋จธ์ค :: ๋ค์ ํฐ ์ซ์ (๋ฌธ์ ํ์ด, ์ฝ๋) (0) | 2020.08.07 |
---|---|
[c++] ํ๋ก๊ทธ๋๋จธ์ค :: ๊ฐ์ฅ ๋จผ ๋ ธ๋ (๋ฌธ์ ํ์ด, ์ฝ๋) (0) | 2020.07.31 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค :: ํ (๋ฌธ์ ํ์ด, ์ฝ๋) (0) | 2020.07.26 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค :: ์นดํซ (brute force) (0) | 2020.05.28 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค :: ์ซ์์ผ๊ตฌ (brute force) (0) | 2020.05.28 |
Comment