-
프로그래머스 - 괄호 회전하기 [C++]문제 풀이/프로그래머스 2023. 8. 22. 16:02반응형
이 문제는 스택을 이용하여 풀었다. 이 문제의 핵심은 스택을 이용하여 괄호의 유효성을 체크하는 것과 문자열을 왼쪽으로 돌리는 방법을 구현하는 것이다.
괄호의 유효성을 체크하는 수도코드는 다음과 같다.
만약 비어있으면 push 안비어있으면 만약 여는 괄호 push 만약 닫는 괄호 top과 비교 같으면 pop 다르면 false 다 끝나고 비어있으면 true 안 비어있으면 false
전체 코드는 다음과 같다.
#include <string> #include <vector> #include <stack> #include <iostream> using namespace std; bool correct(string& str) { stack<char> st; for (char c : str) { if (st.empty()) { st.push(c); } else { if (c == '[' || c == '{' || c == '(') { st.push(c); } else { if (c == ']') { if (st.top() != '[') { return false; } else { st.pop(); } } else if (c == '}') { if (st.top() != '{') { return false; } else { st.pop(); } } else { if (st.top() != '(') { return false; } else { st.pop(); } } } } } if (!st.empty()) { return false; } return true; } string roll(string& s, int dist) { string result = ""; int size = s.size(); for (int i = 0; i < size; i++) { int idx = (i + dist) % size; result += s[idx]; } return result; } int solution(string s) { int answer = 0; for (int i = 0; i < s.size(); i++) { string temp = roll(s, i); if (correct(temp)) { answer++; } } return answer; }
반응형'문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 할인 행사 [C++] (0) 2023.08.22 프로그래머스 - 연속 부분 수열 합의 개수 [C++] (0) 2023.08.22 프로그래머스 - 귤 고르기 [C++] (0) 2023.08.22 프로그래머스 - 멀리 뛰기 [C++] (0) 2023.08.22 프로그래머스 - N개의 최소공배수 (0) 2023.08.22