๋ฌธ์ ์ค๋ช
๋ผ๋ฉด ๊ณต์ฅ์์๋ ํ๋ฃจ์ ๋ฐ๊ฐ๋ฃจ๋ฅผ 1ํค์ฉ ์ฌ์ฉํฉ๋๋ค. ์๋ ๋ฐ๊ฐ๋ฃจ๋ฅผ ๊ณต๊ธ๋ฐ๋ ๊ณต์ฅ์ ๊ณ ์ฅ์ผ๋ก ์์ผ๋ก k์ผ ์ดํ์์ผ ๋ฐ๊ฐ๋ฃจ๋ฅผ ๊ณต๊ธ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ ํด์ธ ๊ณต์ฅ์์ ๋ฐ๊ฐ๋ฃจ๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
ํด์ธ ๊ณต์ฅ์์๋ ํฅํ ๋ฐ๊ฐ๋ฃจ๋ฅผ ๊ณต๊ธํ ์ ์๋ ๋ ์ง์ ์๋์ ์๋ ค์ฃผ์๊ณ , ๋ผ๋ฉด ๊ณต์ฅ์์๋ ์ด์ก๋น๋ฅผ ์ค์ด๊ธฐ ์ํด ์ต์ํ์ ํ์๋ก ๋ฐ๊ฐ๋ฃจ๋ฅผ ๊ณต๊ธ๋ฐ๊ณ ์ถ์ต๋๋ค.
ํ์ฌ ๊ณต์ฅ์ ๋จ์์๋ ๋ฐ๊ฐ๋ฃจ ์๋ stock, ๋ฐ๊ฐ๋ฃจ ๊ณต๊ธ ์ผ์ (dates)๊ณผ ํด๋น ์์ ์ ๊ณต๊ธ ๊ฐ๋ฅํ ๋ฐ๊ฐ๋ฃจ ์๋(supplies), ์๋ ๊ณต์ฅ์ผ๋ก๋ถํฐ ๊ณต๊ธ๋ฐ์ ์ ์๋ ์์ k๊ฐ ์ฃผ์ด์ง ๋, ๋ฐ๊ฐ๋ฃจ๊ฐ ๋จ์ด์ง์ง ์๊ณ ๊ณต์ฅ์ ์ด์ํ๊ธฐ ์ํด์ ์ต์ํ ๋ช ๋ฒ ํด์ธ ๊ณต์ฅ์ผ๋ก๋ถํฐ ๋ฐ๊ฐ๋ฃจ๋ฅผ ๊ณต๊ธ๋ฐ์์ผ ํ๋์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
dates[i]์๋ i๋ฒ์งธ ๊ณต๊ธ ๊ฐ๋ฅ์ผ์ด ๋ค์ด์์ผ๋ฉฐ, supplies[i]์๋ dates[i] ๋ ์ง์ ๊ณต๊ธ ๊ฐ๋ฅํ ๋ฐ๊ฐ๋ฃจ ์๋์ด ๋ค์ด ์์ต๋๋ค.
<์ ํ์ฌํญ>
- stock์ ์๋ ๋ฐ๊ฐ๋ฃจ๋ ์ค๋(0์ผ ์ดํ)๋ถํฐ ์ฌ์ฉ๋ฉ๋๋ค.
- stock๊ณผ k๋ 2 ์ด์ 100,000 ์ดํ์ ๋๋ค.
- dates์ ๊ฐ ์์๋ 1 ์ด์ k ์ดํ์ ๋๋ค.
- supplies์ ๊ฐ ์์๋ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
- dates์ supplies์ ๊ธธ์ด๋ 1 ์ด์ 20,000 ์ดํ์ ๋๋ค.
- k์ผ ์งธ์๋ ๋ฐ๊ฐ๋ฃจ๊ฐ ์ถฉ๋ถํ ๊ณต๊ธ๋๊ธฐ ๋๋ฌธ์ k-1์ผ์ ์ฌ์ฉํ ์๋๊น์ง๋ง ํ๋ณดํ๋ฉด ๋ฉ๋๋ค.
- dates์ ๋ค์ด์๋ ๋ ์ง๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋์ด ์์ต๋๋ค.
- dates์ ๋ค์ด์๋ ๋ ์ง์ ๊ณต๊ธ๋๋ ๋ฐ๊ฐ๋ฃจ๋ ์์ ์์ ์ ์๋ฒฝ์ ๊ณต๊ธ๋๋ ๊ฒ์ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 9์ผ์งธ์ ๋ฐ๊ฐ๋ฃจ๊ฐ ๋ฐ๋ฅ๋๋๋ผ๋, 10์ผ์งธ์ ๊ณต๊ธ๋ฐ์ผ๋ฉด 10์ผ์งธ์๋ ๊ณต์ฅ์ ์ด์ํ ์ ์์ต๋๋ค.
- ๋ฐ๊ฐ๋ฃจ๊ฐ ๋ฐ๋ฅ๋๋ ๊ฒฝ์ฐ๋ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
๋ฌธ์ ์ฃผ์: https://programmers.co.kr/learn/courses/30/lessons/42629
๋ฌธ์ ํ์ด
stock์ด 0์ด๋๋ ์์ ์ด x์ผ ํ๋ผ๊ณ ๊ฐ์ ํ๋ฉด, x์ผ ์ด์ ์๋ ๋ฐ๊ฐ๋ฃจ๋ฅผ ๊ณต๊ธ๋ฐ์์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ dates ๋ฐฐ์ด ๋ด์ x์ผ๋ณด๋ค ์์ ๊ณต๊ธ์ผ ์ค์์ ๊ฐ์ฅ ๊ณต๊ธ๋์ด ํฐ ๋ ์ ๊ณต๊ธ์ ๋ฐ์ผ๋ฉด ๋ฉ๋๋ค.
์ฝ๋์์ ์ต๋ ๊ณต๊ธ๋์ ์ฐพ๊ธฐ ์ํด ์ต๋ ํ ์ฐ์ ์์ ํ(pq)๋ฅผ ์ฌ์ฉํ์๊ณ , pq์ ๋ฃ์ง ์์ ๊ณต๊ธ์ผ๋ค ์ค ๊ฐ์ฅ ๋น ๋ฅธ ๋ ์ ์ธ๋ฑ์ค๋ฅผ idx์ ์ ์ฅํ์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์์ ์ 0์ผ์งธ ๋ถํฐ (k-1)์ผ์งธ๊น์ง ๋ฐ๋ณต์ํ(for๋ฌธ)ํฉ๋๋ค.
- ์ค๋ ๋ ์ง๊ฐ idx๊ฐ ๊ฐ๋ฆฌํค๋ ๊ณต๊ธ์ผ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ
- pq์ ๊ณต๊ธ๋ ์ ์ฅ
- idx๊ฐ ๋ค์ ๊ณต๊ธ์ผ์ ๊ฐ๋ฆฌํด
- stock์ ๋ค ์ผ์ ๊ฒฝ์ฐ ( => ๊ณต๊ธ ๋ฐ์์ผ ํจ)
- ๊ฐ๋ฅํ ์ ์ผ ํฐ ๊ณต๊ธ๋(pq.top())์ ๊ณต๊ธ ๋ฐ์
- ๊ณต๊ธ ๋ฐ์ ๋ ์ง์ ๊ณต๊ธ๋ ์ญ์ (pq.pop())
- answer์ 1 ๋ํด์ฃผ๊ธฐ
- stock-- (๋งค์ผ ๋ฐ๊ฐ๋ฃจ 1ํค์ฉ ์๋ชจ)
์์ค์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// ๋ผ๋ฉด ๊ณต์ฅ
#include <iostream>
#include <vector>
#include <functional>
#include <queue>
using namespace std;
int solution(int stock, vector<int> dates, vector<int> supplies, int k) {
int answer = 0;
priority_queue<int, vector<int>, less<int> > pq; // ์ต๋ํ์ ๋ง์กฑํ๋ ์ฐ์ ์์ ํ
int idx = 0; // pq์ ๋ฃ์ง ์์ dates ์ค์์ ๊ฐ์ฅ ์์ ๊ฒ์ index
for (int day = 0; day < k; day++) { // 0์ผ์งธ๋ถํฐ (k-1)์ผ์งธ๊น์ง ๋ฐ๋ณต
if (dates[idx] == day) { // ๊ณต๊ธ๋ฐ์ ์ ์๋ ๋ ์ด ๋์์ ๊ฒฝ์ฐ
pq.push(supplies[idx]); // pq์ ๊ณต๊ธ๋ ์ ์ฅ
if (idx != dates.size() - 1) // dates ๋ฒกํฐ ๋ฒ์ ๋์ด๊ฐ๋ ๊ฒ์ ๋ฐฉ์ง
idx++; // ๋ค์ ๊ณต๊ธ์ผ์ ๊ฐ๋ฆฌํด
}
if (stock == 0) { // stock์ ๋ค ์ผ์ ๊ฒฝ์ฐ
stock += pq.top(); // ๊ณต๊ธ๋์ด ์ ์ผ ํฐ ๋ ์ง์ ๊ณต๊ธ ๋ฐ์
pq.pop();
answer++;
}
stock--;
}
return answer;
}
|
cs |
๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ์์ ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค :)
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / c++] ์ด์ค์ฐ์ ์์ํ ํ์ด (0) | 2020.07.29 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ๋์คํฌ ์ปจํธ๋กค๋ฌ ํ์ด (0) | 2020.07.24 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ๋ ๋งต๊ฒ ํ์ด (0) | 2020.07.24 |
[C++] ํ๋ก๊ทธ๋๋จธ์ค - "๋ชจ์๊ณ ์ฌ" ํ์ด (0) | 2020.07.03 |
[C++] ํ๋ก๊ทธ๋๋จธ์ค - "H-index" ํ์ด (0) | 2020.06.03 |