https://school.programmers.co.kr/learn/courses/30/lessons/76502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
unordered_map 자료구조를 사용해서 괄호 쌍을 저장하고, stack을 사용해서 옳은 괄호인지 검사했다.
1. 문자열의 가장 앞 문자를 맨 뒤에 추가한 후 제거한다.
2. check 함수를 통해 옳은 문자열인지 검사한다.
3. check 함수는 문자가 쌍이 아니라면 stk에 추가하고 맞다면 제거한 후, stk이 비어 있다면 옳은 괄호쌍이므로 true를 반환한다.
#include <string>
#include <vector>
#include <stack>
#include <unordered_map>
#include <iostream>
using namespace std;
unordered_map<char, char> m{{'{', '}'}, {'[', ']'}, {'(', ')'}};
bool check(string& s){
stack<char> stk;
stk.push(s[0]);
for (int i=1; i<s.size(); i++){
char v = stk.top();
if (stk.empty()) {
stk.push(s[i]);
continue;
}
if (m[v]!=s[i]) stk.push(s[i]);
else stk.pop();
}
if (!stk.empty()) return false;
else return true;
}
int solution(string s) {
int answer = 0;
for (int i=0; i<s.size(); i++) {
s+=s[0];
s.erase(s.begin());
if (check(s)) {
answer++;
}
}
return answer;
}
'프로그래머스 > Lv.2' 카테고리의 다른 글
[C++] 프로그래머스 귤 고르기 (0) | 2023.02.23 |
---|---|
[C++] 프로그래머스 의상 (0) | 2023.02.23 |
[C++] 프로그래머스 JadenCase 문자열 만들기 (0) | 2023.02.20 |
[C++] 프로그래머스 문자열 압축 - 완전탐색 (0) | 2023.02.18 |
[C++] 프로그래머스 거리두기 확인하기 - BFS (0) | 2023.02.14 |