Notice
Recent Posts
Recent Comments
Today
Total
01-10 18:14
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Partially Committed

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ ๋ณธ๋ฌธ

๐Ÿ”ฅ Algorithm || ๋ฌธ์ œํ’€์ด/PS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ

WonderJay 2022. 7. 14. 12:22
728x90
๋ฐ˜์‘ํ˜•
SMALL

https://school.programmers.co.kr/learn/courses/30/lessons/42883?language=cpp# 

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

์ฒ˜์Œ์—๋Š” ์ˆœ์—ด์„ ์ด์šฉํ•ด์„œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค ํƒ์ƒ‰ํ•ด๊ฐ€๋ฉฐ ์ตœ๋Œ€ ์ˆซ์ž๋ฅผ ์ฐพ์œผ๋ ค๊ณ  ํ–ˆ๋‹ค. ๊ทผ๋ฐ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” number ๊ธธ์ด๊ฐ€ ์ตœ๋Œ€ ๋ฐฑ๋งŒ์ด๋ผ ์•„๋งˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚  ๊ฒƒ๊ฐ™์•„์„œ ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ํƒ์ƒ‰ํ–ˆ๊ณ , ์•ฝ๊ฐ„์˜ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์–ป์€ ์•„์ด๋””์–ด๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

 

๋จผ์ €  number ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด stack ์— ์ฐจ๊ณก์ฐจ๊ณก ๋„ฃ๋Š”๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด number = 1924, k  = 2 ๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž.

number ์„ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ์›์†Œ๋ฅผ stack ์— ๋„ฃ์„์ง€ ๋ง์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

๋งจ ์ฒ˜์Œ์—๋Š” stack ์ด ๋น„์›Œ์ ธ์žˆ์œผ๋ฏ€๋กœ ๋„ฃ๋Š”๋‹ค.

-> stack : { 1 }

๊ทธ๋ฆฌ๊ณ   k > 0 ์ด๊ณ  i < number.size() ์ด๋ฏ€๋กœ ๋‹ค์Œ ์›์†Œ์ธ 9 ๋ฅผ ๋ฐ”๋ผ๋ดค์„ ๋•Œ ํ˜„์žฌ stack ์˜ top ๋ณด๋‹ค ํฌ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ stack.top() ์ด 9 ๋ณด๋‹ค ํด ๋•Œ๊นŒ์ง€ pop ์„ ํ•˜๋ฉฐ, k ๋ฅผ ํ•˜๋‚˜์”ฉ ์ค„์ธ๋‹ค.

-> stack : { } , k = 1

์Šคํƒ์ด ๋น„์›Œ์กŒ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ทธ๋ƒฅ ๋„ฃ๋Š”๋‹ค.

-> stack : { 9 }, k =1

๋‹ค์Œ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค. 2 ๋Š” 9 ๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ๊ทธ๋ƒฅ ๋„ฃ๋Š”๋‹ค.

stack : { 9 , 2}, k = 1

๋‹ค์Œ ์ˆ˜๋ฅผ ๋ณด๋‹ˆ๊นŒ 4์ธ๋ฐ stack.top() ์ธ 2 ๋ณด๋‹ค ํฌ๋‹ค.

pop ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  k ๋ฅผ ํ•˜๋‚˜ ์ค„์ธ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ k = 0 ์ด ๋˜์–ด๋ฒ„๋ ธ๋‹ค. ๋งŒ์•ฝ ์ด ์‹œ์ ์—์„œ ๋ชจ๋“  ์›์†Œ๋ฅผ ํƒ์ƒ‰ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ๋’ท ์›์†Œ๋“ค์€

์ฐจ๋ก€๋Œ€๋กœ ์ฐจ๊ณก์ฐจ๊ณก ์Šคํƒ์— push ํ•ด์ค€๋‹ค. ํ˜น์€ ๋ชจ๋“  ์›์†Œ๋ฅผ ํƒ์ƒ‰ํ–ˆ๋Š”๋ฐ k ๊ฐ€ 0 ์ด ์•„๋‹ˆ๋ผ๋ฉด

k ์˜ ๊ฐœ์ˆ˜๋งŒํผ stack ์„ pop ํ•ด์ค€๋‹ค.

 

์œ„ ๊ณผ์ •์„ ๊ฑฐ์นœ ๋‹ค์Œ stack ์„ answer ๋กœ ์˜ฎ๊ฒจ์ฃผ๋ฉด ์™„์„ฑ.

 

[C++]

#include <string>
#include <vector>
#include <stack>
#include <iostream>
#include <algorithm>

using namespace std;

string solution(string number, int k) {
    string answer = "";
    stack<char> st;
    
    int i = 0;
    for(i = 0 ; i < number.size(); i++)
    {
        if(k==0) break;
        if(st.empty()){
            st.push(number[i]);
            continue;
        }
        else
        {
            while(!st.empty()&&st.top() < number[i] && k)
            {
                st.pop();
                k--;
            }
            st.push(number[i]);
            continue;
        }
    }
    while(i!=number.size())
        st.push(number[i++]);
    
    while(k>0 && !st.empty())
    {
        st.pop();
        k--;
    }
    
    
    while(!st.empty())
    {
        answer.push_back(st.top());
        st.pop();
    }
    reverse(answer.begin(), answer.end());
    return answer;
}

728x90
๋ฐ˜์‘ํ˜•
LIST
Comments