๊ธ€ ์ž‘์„ฑ์ž: ๋˜ฅํด๋ฒ .
๋ฐ˜์‘ํ˜•

๋งํฌ


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] ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช… 1์ดˆ ์‹œ์ ์˜ โ‚ฉ1์€ ๋๊นŒ์ง€ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€

programmers.co.kr

 

 

๋ฌธ์ œ ์„ค๋ช…


์ดˆ ๋‹จ์œ„๋กœ ๊ธฐ๋ก๋œ ์ฃผ์‹ ๊ฐ€๊ฒฉ์ด ๋‹ด๊ธด ๋ฐฐ์—ด 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๋ฅผ ๊ตฌํ•œ๋‹ค.

 

์ด๊ฒŒ ๋์ด๋‹ค.

๋ฐ˜์‘ํ˜•