[C++] ์ฃผ์ ๊ฐ๊ฒฉ
๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/42584#
๋ฌธ์ ์ค๋ช
์ด ๋จ์๋ก ๊ธฐ๋ก๋ ์ฃผ์ ๊ฐ๊ฒฉ์ด ๋ด๊ธด ๋ฐฐ์ด prices๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ๊ฒฉ์ด ๋จ์ด์ง์ง ์์ ๊ธฐ๊ฐ์ ๋ช ์ด์ธ์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ ์กฐ๊ฑด
- prices์ ๊ฐ ๊ฐ๊ฒฉ์ 1 ์ด์ 10,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- prices์ ๊ธธ์ด๋ 2 ์ด์ 100,000 ์ดํ์ ๋๋ค.
์ ์ถ๋ ฅ ์
prices | return |
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
ํ์ด
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> prices) {
int priceSize = prices.size();
vector<int> answer(priceSize);
answer[priceSize - 1] = 0;
for(int i = priceSize - 2; i >= 0; --i)
{
int currPrice = prices[i];
if(currPrice > prices[i+1])
{
answer[i] = 1;
continue;
}
int checkIndex = answer[i+1] + 1 + i;
while(checkIndex < (priceSize-1) && currPrice <= prices[checkIndex])
{
checkIndex += answer[checkIndex];
}
answer[i] = checkIndex - i;
}
return answer;
}
ํ์ด ์ค๋ช
๋ฌธ์ ๋ฅผ ์ฝ์ด๋ดค์ ๋ vector๋ฅผ ์ํํ๋ฉด์ ํ๋ํ๋ ๊ฐ ๋น๊ต๋ฅผ ํตํด ์ ๋ต์ ๋์ถํ ์ ์์ง๋ง ํจ์จ์ด ์ข์ง ์๋ค.
๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ ๋ก์ง์ผ๋ก ํ์๋ค.
์ผ๋จ vector๋ฅผ ๊ฑฐ๊พธ๋ก ์ํํ์๋ค. ์๋ํ๋ฉด ๊ณผ๊ฑฐ์ ๊ฒฐ๊ณผ๋ฅผ ํตํด ํ์ฌ์ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ๊ธฐ ์ํด์!
์ผ๋จ, answer์ ๋ง์ง๋ง ์ธ๋ฑ์ค ๊ฐ(answer[4])์ ๋ฌด์กฐ๊ฑด 0์ด๋ค.
๋ค์์, answer[3]์ ๊ฐ์ ๊ตฌํด์ผ ํ๋ค.
1. prices[3]์ 2๊ณ , prices[4]๋ 3์ด๋ค.
2. ๊ทธ ๋ง์ ์ฆ์จ, 2๋ 3๋ณด๋ค ์์ ๊ฐ์ด๊ณ ๊ฐ๊ฒฉ์ด ์ธ์ ๋จ์ด์ก๋์ง ์กฐ์ฌํ๊ธฐ ์ํด์ prices[4]๊ฐ ์ธ์ ๊ฐ๊ฒฉ์ด ๋จ์ด์ก๋
์กฐ์ฌํ ํ์๊ฐ ์๋ค.
3. answer[4]๋ฅผ ํตํด prices[4]๊ฐ ์ธ์ ๊ฐ๊ฒฉ์ด ๋จ์ด์ก๋ ์กฐ์ฌ๋ฅผ ํด๋ณธ๋ค.
4. answer[4]๋ฅผ ๋ดค๋๋ ๊ฐ์ด 0์ด๋ค.(๋ง์ง๋ง ์ธ๋ฑ์ค๋ผ๋ ๋ป)
5. ์ฆ prices [3]์ ๋ง์ง๋ง๊น์ง ๊ฐ๊ฒฉ์ด ์ ๋จ์ด์ก๋ค๋ ์๋ฏธ์ด๋ฏ๋ก answer[3] = ๋ง์ง๋ง ์ธ๋ฑ์ค - ํ์ฌ ์ธ๋ฑ์ค = 1์ด๋ค.
๋ค์์ ๊ฒฝ์ฐ๋ ๋งค์ฐ ๊ฐ๋จํ๋ค 3์ 2๋ณด๋ค ๊ฐ์ด ํฌ๋ฏ๋ก ๊ฐ๊ฒฉ์ด ๋ฐ๋ก ๋จ์ด์ง๋ค๊ณ ๋ณผ ์ ์๋ค.
์ฆ answer[2] = 1์ด๋ค.
์ค๋ช ์ด ๊ธธ์ด์ ๋๊ฒ ์ด๋ ต๊ณ ๊ฑฐ์ฐฝํด ๋ณด์ด๋๋ฐ ๊ฐ๋จํ๋ค.
๋ด ์์ ๋ ์์ด ์ธ์ ๊ฐ๊ฒฉ์ด ๋จ์ด์ก๋์ง ์์ answer๋ฅผ ํตํด ์ฐธ๊ณ ํ์ฌ ๋ด answer๋ฅผ ๊ตฌํ๋ค.
์ด๊ฒ ๋์ด๋ค.
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์ (0) | 2019.09.10 |
---|---|
[Golang] x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์ (0) | 2019.09.10 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[C++] x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์
[C++] x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์
2019.09.10 -
[Golang] x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์
[Golang] x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์
2019.09.10