딱히 어렵진 않았는데 경우 생각하는게 귀찮았다.
string 변환에 최적화가 안된 느낌인데 잘 모르겠다 ㅠ
옳은 문자열인지 확인은 stack 개념을 이용해서 했다.
#include <string>
#include <vector>
using namespace std;
bool IS_RIGHT(string s)
{
vector<char> stack;
for (int i = 0; i < s.size(); i++)
{
if (s[i] == '(' || s[i] == '{' || s[i] == '[')
stack.push_back(s[i]);
else
{
if (stack.empty())
return false;
else
{
if (stack[stack.size() - 1] == '(' && s[i] == ')')
stack.pop_back();
else if (stack[stack.size() - 1] == '{' && s[i] == '}')
stack.pop_back();
else if (stack[stack.size() - 1] == '[' && s[i] == ']')
stack.pop_back();
else
return false;
}
}
}
if (!stack.empty())
return false;
else
return true;
}
int solution(string s) {
int answer = 0;
for (int i = 0; i < s.size(); i++)
{
if (IS_RIGHT(s))
answer++;
char temp = s[0];
s.erase(s.begin());
s.push_back(temp);
}
return answer;
}'Coding_Test 연습 > Programmers' 카테고리의 다른 글
| [프로그래머스] (C++) LV2 위장 (0) | 2022.05.26 |
|---|---|
| [프로그래머스] (C++) LV2 배달 (0) | 2022.05.25 |
| [프로그래머스] (C++) LV2 예상 대진표 (0) | 2022.05.24 |
| [프로그래머스] (C++) LV2 게임 맵 최단거리 (0) | 2022.05.24 |
| [프로그래머스] (C++) LV2 조이스틱 (0) | 2022.05.23 |