https://school.programmers.co.kr/learn/courses/30/lessons/76502
๋ฌธ์ ์ค๋ช
๋ค์ ๊ท์น์ ์งํค๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๊ณ ์ ์ํฉ๋๋ค.
- (), [], {} ๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ง์ฝ A๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, (A), [A], {A} ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, [] ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, ([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ง์ฝ A, B๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, AB ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, {} ์ ([]) ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, {}([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
๋๊ดํธ, ์ค๊ดํธ, ๊ทธ๋ฆฌ๊ณ ์๊ดํธ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด s๋ฅผ ์ผ์ชฝ์ผ๋ก x (0 ≤ x < (s์ ๊ธธ์ด)) ์นธ๋งํผ ํ์ ์์ผฐ์ ๋ s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด ๋๊ฒ ํ๋ x์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๋ด ํ์ด
๊ดํธ ๊ฒ์ฆ์ stack์ผ๋ก, ๊ดํธ ๋ฌธ์์ด ํ์ ์ queue๋ก ๊ตฌํํ๋ค. 2์ค ๋ฐ๋ณต๋ฌธ์ ๋์์ผํด์ ์๊ฐ ๋ณต์ก๋๊ฐ ๊ฑฑ์ ๋์๋๋ฐ, ๋คํํ s์ ๊ธธ์ด๊ฐ 1,000์ดํ๋ก ์ต๋ ๋ฐ๋ณต ํ์๊ฐ 1,000,000 ์ ๋๋ผ ์๊ฐ ์ด๊ณผ๋ ๋์ง ์์ ๊ฒ ๊ฐ๋ค.
#include <string>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
int solution(string s) {
int answer = 0;
queue<char> q;
for(auto c : s)
{
q.emplace(c);
}
for(int i = 0; i < s.size(); ++i)
{
queue<char> copy = q;
stack<char> st;
while(!copy.empty())
{
char front = copy.front();
copy.pop();
if(!st.empty())
{
char top = st.top();
if(front == ']')
if(top == '[')
{
st.pop();
continue;
}
if(front == '}')
if(top == '{')
{
st.pop();
continue;
}
if(front == ')')
if(top == '(')
{
st.pop();
continue;
}
}
st.emplace(front);
}
if(st.empty())
++answer;
int front = q.front();
q.pop();
q.emplace(front);
}
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ์ ์ฐ๊ธฐ(C++) (0) | 2023.07.17 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - 124 ๋๋ผ์ ์ซ์(C++) (0) | 2023.07.14 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ(C++) (0) | 2023.07.11 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ๋ฐฐ๋ฌ(C++) (0) | 2023.07.10 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ๋ ํ ํฉ ๊ฐ๊ฒ ๋ง๋ค๊ธฐ(C++) (0) | 2023.07.04 |