-
[프로그래머스/Level 2] 괄호 회전하기 (C++)알고리즘 문제풀이/프로그래머스 2021. 4. 16. 14:29
programmers.co.kr/learn/courses/30/lessons/76502
문자열 s의 크기만큼 괄호를 왼쪽으로 한칸씩 회전하면서 스택을 이용하여 올바른 괄호인지 검증하는 문제였습니다.
#include <string> #include <vector> #include <stack> using namespace std; // 괄호를 왼쪽으로 한칸 회전 string rotate(string str) { string res = str; char tmp = res[0]; res.erase(0, 1); res.push_back(tmp); return res; } // 올바른 괄호인지 검증 bool isCorrect(string str) { stack<char> st; for(int i = 0; i < str.size(); i++) { if(str[i] == '(' || str[i] == '{' || str[i] == '[') { st.push(str[i]); } else { if(st.empty()) return false; else { if(st.top() == '(' && str[i] == ')') st.pop(); else if(st.top() == '{' && str[i] == '}') st.pop(); else if(st.top() == '[' && str[i] == ']') st.pop(); } } } if(!st.empty()) return false; return true; } int solution(string s) { int answer = 0; if(isCorrect(s)) answer++; for(int i = 1; i < s.size(); i++) { s = rotate(s); if(isCorrect(s)) answer++; } return answer; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 1] 로또의 최고 순위와 최저 순위 (C++) (0) 2021.04.28 [프로그래머스/Level 3] 합승 택시 요금 (C++) (0) 2021.04.22 [프로그래머스/Level 1] 음양 더하기 (C++) (0) 2021.04.16 [프로그래머스/Level 3] 최고의 집합 (C++) (0) 2021.04.15 [프로그래머스/Level 3] 줄 서는 방법 (C++) (0) 2021.04.12