hwooo
프로그래머스 (C/C++) 76502 : 괄호 회전하기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/76502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr



풀이
스택을 사용하여 '(', '{', '[' 가 들어왔을 땐 스택에 넣어줬고 ')', '}', ']' 가 들어왔을 땐 직전에 들어온 괄호와 짝이 맞는지 확인했다.
짝이 맞을 때만 참을 반환해 answer를 구했다.
코드
#include <string>
#include <vector>
#include <stack>
#include <algorithm>
#include <map>
using namespace std;
bool Is_right(string s){
stack <char> Save;
map <char, char> M = {{')', '('}, {'}', '{'}, {']', '['}};
int i;
for(i = 0; i < s.size(); i++){
if(s[i] == '(' || s[i] == '{' || s[i] == '[')
Save.push(s[j]);
else if(s[i] == ')' || s[i] == '}' || s[i] == ']'){
// 스택이 비어 있거나 짝이 맞지 않으면 거짓 반환
if (Save.empty() || Save.top() != M[s[j]])
return false;
Save.pop();
}
}
if(!Save.empty()) return false;
return true;
}
int solution(string s) {
int answer = 0, i;
for(i = 0; i < s.size(); i++){
// 주어진 문자열 s를 한 칸씩 왼쪽으로 밀어줌
rotate(s.begin(), s.begin() + 1, s.end());
answer += Is_right(s);
}
return answer;
}
'Study > Algorithm' 카테고리의 다른 글
| 프로그래머스 (C/C++) 42587 : 프로세스 (0) | 2023.08.27 |
|---|---|
| 프로그래머스 (C/C++) 12914 : 멀리 뛰기 (0) | 2023.08.20 |
| 프로그래머스 (C/C++) 120838 : 모스부호(1) (0) | 2023.08.17 |
| 프로그래머스 (C/C++) 159993 : 미로 탈출 (0) | 2023.07.15 |
| 프로그래머스 (C/C++) 17680 : [1차] 캐시 (0) | 2023.07.15 |