# [Stack ํ™œ์šฉ] 17298. ์˜คํฐ์ˆ˜
Study Repository

[Stack ํ™œ์šฉ] 17298. ์˜คํฐ์ˆ˜

by rlaehddnd0422

 

 

17298๋ฒˆ: ์˜คํฐ์ˆ˜

์ฒซ์งธ ์ค„์— ์ˆ˜์—ด A์˜ ํฌ๊ธฐ N (1 ≤ N ≤ 1,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์— ์ˆ˜์—ด A์˜ ์›์†Œ A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)์ด ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net


์š”์•ฝ

1. ํฌ๊ธฐ๊ฐ€ N์ธ ๋ฐฐ์—ด์—์„œ  

2. i๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ๋ฐฐ์—ด์˜ ๊ฐ’์—์„œ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์ถœ๋ ฅ

3. ๋งŒ์•ฝ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์ˆ˜๊ฐ€ ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ๋ฐฐ์—ด์˜ ๊ฐ’๋ณด๋‹ค ์ž‘๋‹ค๋ฉด -1 ์ถœ๋ ฅ

 

์ด์ค‘ ํฌ๋ฌธ์œผ๋กœ ํ•ด๊ฒฐ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ตœ์•…์˜ ๊ฒฝ์šฐ์— 1,000,000 * 1,000,000 = 1,000,000,000,000 (1์กฐ) ์ฆ‰, 1์กฐ / 1์–ต(1s) = 10,000s๊ฐ€ ๊ฑธ๋ฆฌ๊ฒŒ ๋˜์–ด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

๋ฌธ์ œ๋Š” ๋ฐฐ์—ด์˜ i๋ฒˆ์งธ ๊ฐ’์—์„œ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•˜๋ƒ๊ฐ€ ๊ด€๊ฑด์ž…๋‹ˆ๋‹ค.

 

์•„์ด๋””์–ด๊ฐ€ ๋– ์˜ค๋ฅด์ง€ ์•Š์•„ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด์•˜๋Š”๋ฐ ๋Œ€๋ถ€๋ถ„ ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ํ•œ๋ฒˆ๋งŒ ํ›‘์–ด O(N) ์‹œ๊ฐ„ ์•ˆ์— ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 


Solution : Stack ํ™œ์šฉํ•˜๊ธฐ

๋ฐฐ์—ด ๋ ๊ฐ’๋ถ€ํ„ฐ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’๊นŒ์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ ์ถœ๋ ฅ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋„์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ์Šคํƒ์„ ์ด์šฉํ•ด์„œ ๊ฒ€์‚ฌํ•˜๋Š”๋ฐ, ์Šคํƒ์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜์˜€๋Š”์ง€ ๊ทธ๋ฆผ์„ ํ†ตํ•ด ์‚ดํŽด๋ด…์‹œ๋‹ค.

 

v๋Š” ์ž…๋ ฅ๋ฐ›์€ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ans๋Š” ๊ตฌํ•  ์˜คํฐ์ˆ˜ ๋ฐฐ์—ด 

set

1) ์˜คํฐ์ˆ˜ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’์€ ๋น„๊ตํ•  ๋Œ€์ƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ -1๊ฐ’์ด ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

2) stack์— ํ˜„์žฌ ์ธ๋ฑ์Šค ๋ฐฐ์—ด๊ฐ’์„ pushํ•ฉ๋‹ˆ๋‹ค.

 

ans : ( ) ( ) ( ) -1

 

์ด์ œ๋ถ€ํ„ฐ ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ๋์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์˜คํฐ์ˆ˜ ๋ฐฐ์—ด์„ ์ฑ„์›Œ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ์šฐ์„  stack์˜ top์— ์žˆ๋Š” ๊ฐ’๊ณผ ํ˜„์žฌ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

 

  • ์—ฌ๊ธฐ์„œ ์Šคํƒ์˜ top์— ์žˆ๋Š” ๊ฐ’์ด ๋” ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ ์Šคํƒ์˜ top์— ์žˆ๋Š” ๊ฐ’์ด ๋” ํด ๋•Œ๊นŒ์ง€ ์Šคํƒ์„ pop ํ•ฉ๋‹ˆ๋‹ค.

 

2. ๋น„๋กœ์†Œ ์Šคํƒ์˜ ํƒ‘ ๊ฐ’์ด ๋” ์ปค์ง€๊ฒŒ ๋˜๋ฉด ๋ฐ”๋กœ ๊ทธ ์Šคํƒ์˜ ํƒ‘์— ์žˆ๋Š” ๊ฐ’์ด ์˜คํฐ์ˆ˜ ๊ฐ’์ด ๋˜๋ฏ€๋กœ, ์ •๋‹ต ๋ฐฐ์—ด์— ๊ฐ’์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

 

3. ์—ฌ๊ธฐ์„œ ๋์ด ์•„๋‹ˆ๋ผ ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ stack์— ํ‘ธ์‰ฌํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

why : ํ˜„์žฌ ๊ฐ’์ด ๋‹ค์Œ ์ง„ํ–‰ํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ๊ฐ’์˜ ์˜คํฐ์ˆ˜๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ stack์— ํ‘ธ์‰ฌํ•ฉ๋‹ˆ๋‹ค

 

์ฃผ์˜ํ•ด์•ผ ํ•  ์  !

์ด ๋•Œ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๊ฐ’์ด ๋ชจ๋‘ ํ˜„์žฌ ์ธ๋ฑ์Šค๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ ์Šคํƒ์ด ๋น„์›Œ์ง€๋Š”๋ฐ ์ด ๊ฒฝ์šฐ์—๋Š” ์Šคํƒ์— ํ˜„์žฌ ์ธ๋ฑ์Šค ๊ฐ’์„ ์Šคํƒ์— ๋„ฃ๊ณ , ์ •๋‹ต ๋ฐฐ์—ด์— -1์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

 

ans : ( ) ( ) (7) -1

 

์ด ๋งค์ปค๋‹ˆ์ฆ˜์œผ๋กœ ๋‹ค์Œ ์˜คํฐ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ด…์‹œ๋‹ค.

 

1. ํ˜„์žฌ stack์—๋Š” ์ด์ „ ๊ณผ์ •์„ ํ†ตํ•ด 2, 7์ด ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. ํ˜„์žฌ ์ธ๋ฑ์Šค ๊ฐ’์ธ 5์™€ stack์˜ top ( 2 )๋ฅผ ๋น„๊ตํ•˜๋ฉด ํ˜„์žฌ ์ธ๋ฑ์Šค ๊ฐ’์ด ๋” ํฌ๋‹ˆ ๋” ์ž‘์„๋•Œ๊นŒ์ง€ stack์„ popํ•ฉ๋‹ˆ๋‹ค.

 

3. ๋น„๋กœ์†Œ stack์˜ ํƒ‘ ๊ฐ’์ด ๋” ์ปค์ง€๊ฒŒ ๋˜๋ฉด ์ •๋‹ต ๋ฐฐ์—ด ๊ฐ’์€ ์Šคํƒ์˜ ํƒ‘ ๊ฐ’์ด ๋˜๊ณ , ์Šคํƒ์— ํ˜„์žฌ ์ธ๋ฑ์Šค ๊ฐ’์ธ 5๊ฐ€ push ๋ฉ๋‹ˆ๋‹ค.

 

ans : ( ) (7) (7) -1

 

ans : (5) (7) (7) -1

 

 

์ด๋ ‡๊ฒŒ ์Šคํƒ์„ ์ด์šฉํ•ด์„œ O(N) ์‹œ๊ฐ„ ์•ˆ์— ์˜คํฐ์ˆ˜ ๋ฐฐ์—ด์„ ๊ตฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

 

์†Œ์Šค์ฝ”๋“œ

#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#define FASTio ios_base :: sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)
#define endl '\n' 

using namespace std;

int n;
vector<int> v(1000001);
vector<int> ans(1000001);

stack<int> st;

int main()
{
    FASTio;
    cin >> n;

    for(int i=0;i<n;i++)
    {
        cin >> v[i];
    }

    st.push(v[n-1]);
    ans[n-1] = -1;

    
    for(int i=n-2;i>=0;i--)
    {        
        while(!st.empty() && st.top() <= v[i])
        {   
            st.pop();
        }

        if(st.empty())
        {
            st.push(v[i]);
            ans[i] = -1;
            continue;
        } else {
            ans[i] = st.top();
            st.push(v[i]);
        }
    }

    for(int i=0;i<n;i++)
    {
        cout << ans[i] << ' ';
    }


    return 0;
}

 

 

 

 

 

 

 

 

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ