Notice
Recent Posts
Recent Comments
Today
Total
01-11 01:45
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Partially Committed

[2017 ํŒ์Šคํƒ€์šด] ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ ๋ณธ๋ฌธ

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

[2017 ํŒ์Šคํƒ€์šด] ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ

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

https://school.programmers.co.kr/learn/courses/30/lessons/12973#

 

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

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

programmers.co.kr

  ์ž…๋ ฅ ๋ฌธ์ž์—ด์ด ๋“ค์–ด์˜ค๋ฉด "์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ" ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ๋ž€, ๋ฌธ์ž์—ด ์ค‘ ๊ฐ™์€ ์•ŒํŒŒ๋ฒณ์ด 2๊ฐœ ๋ถ™์–ด์žˆ์œผ๋ฉด ๊ทธ pair ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ

์ด๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๋‚ ๋ ค๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ง์ง€์–ด ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด์ธ ๊ฒƒ์ด๋‹ค.

 

  ๊ฐ€์žฅ ์ฒ˜์Œ์— ๋– ์˜ค๋ฅธ ํ’€์ด๋Š”, ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ง์ง€์–ด ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” pair ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด

substr ์„ ์ด์šฉํ•ด์„œ ๋ฌธ์ž์—ด์„ ์ค„์—ฌ๋‚˜๊ฐ€๋‹ค๊ฐ€ ๋ฌธ์ž์—ด์ด ๋น„๊ฒŒ ๋˜๋ฉด ์ง์ง€์–ด ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด ์ธ ๊ฒƒ์ด๊ณ 

๋ฌธ์ž์—ด์ด ๋‚จ์•„์žˆ๋‹ค๋ฉด ์ง์ง€์–ด ์ œ๊ฑฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ž์—ด์œผ๋กœ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

  ํ•˜์ง€๋งŒ ํ•ด๋‹น ๋ฌธ์ œ์—์„œ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž์—ด์˜ ์ตœ๋Œ€ ๊ธธ์ด๋Š” 1,000,000 ์ด๋ฉฐ ์œ„ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์ดํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ˜๋ณต๋ฌธ์„ ๊ณ„์† ๋Œ์•„์•ผ ํ•˜๊ธฐ ๋–„๋ฌธ์— TLE ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ํ’€์ดํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.

๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ STACK ์— ๊ฐ๊ฐ์˜ ์•ŒํŒŒ๋ฒณ์„ ๋„ฃ๊ณ , ์ง์ „์— ๋“ค์–ด์˜จ ๋ฌธ์ž์™€ ํ˜„์žฌ ์Šคํƒ์˜ TOP ์„ ๋น„๊ตํ•˜์—ฌ ์ง์ง€์–ด ์ œ๊ฑฐํ•ก ์ˆ˜ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์ดํ•  ๊ฒฝ์šฐ O(N) ์œผ๋กœ ํ’€์ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

ํ’€์ด 1.

[C++]

#include <iostream>
#include <string>
#include <iostream>

using namespace std;

bool check(string& s)
{
    string u = ""; string v = "";
    for(int i = 1 ; i < s.size(); i ++)
    {
        if(s[i-1] == s[i])
        {
            u = s.substr(0, i-1);
            v = s.substr(i+1, s.size()-1);
            s = u + v;
            return true;
        }
    }
    return false;
}

int solution(string s)
{
    int answer = 0;
    while(!s.empty())
    {
        if(check(s)) continue;
        else
        {
            return 0;
        }
    }
    
    return 1;
}

 

ํ’€์ด2

[C++]

#include <iostream>
#include <string>
#include <iostream>
#include <stack>

using namespace std;

int solution(string s)
{
    int answer = 0;
    stack<char> st;
    for(int i = 0 ; i < s.size(); i ++)
    {
        st.push(s[i]);
        if(st.size() < 2) continue;
        else
        {
            char top_element = st.top();
            st.pop();
            
            if(st.top() == top_element) 
            {
                st.pop();
            }
            else
            {
                st.push(top_element);
            }
            
        }
    }
    if(st.empty() == true) answer = 1;
    else 
    {
        answer = 0;
        while(st.empty()) st.pop();
    }
    
    return answer;
}

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