![[BOJ] 백준_9012번_괄호](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8QE3U%2FbtrdqLiYzdw%2FKN9PtLNAG5Fqgkv4jic6Gk%2Fimg.png)
[BOJ] 백준_9012번_괄호백준 알고리즘2021. 8. 30. 12:44
목차
문제 출처
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
코드
//[BOJ] 9012_괄호
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main()
{
int i, j, size;
int T = 0;
cin >> T;
for (i = 0; i < T; i++) {
string str;
string ans = "YES";
cin >> str;
stack<char> s;
for (j = 0; j < str.length(); j++) {
if (str[j] == '(')
s.push(str[j]);
else if (!s.empty() && (str[j] == ')'))
s.pop();
else {
ans = "NO";
break;
}
}
if (!s.empty())
ans = "NO";
cout << ans << endl;
}
return 0;
}
런타임 에러 코드
//[BOJ] 9012_괄호_런타임에러
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int Func()
{
string str;
cin >> str;
stack<char> s;
for (int j = 0; j < str.length(); j++) {
if (str[j] == '(')
s.push(str[j]);
else if (!s.empty() && (str[j] == ')'))
s.pop();
else
return false;
}
if (!s.empty())
return false;
}
int main()
{
int T = 0;
cin >> T;
for (int i = 0; i < T; i++) {
if (!Func())
cout << "NO" << endl;
else
cout << "YES" << endl;
}
return 0;
}
함수를 사용하고 싶어서 처음에는 아래쪽 코드로 작성했었다. 실행과 종료 모두 정상적으로 이루어졌지만 런타임 에러로 정답처리가 되지 않았다. 이유를 모르겠다... C++로 작성하는 것이 익숙하지 않아서 구글링을 많이 하면서 작성했는데 일단 스택이 이미 구현되어 있어서 편했다. 처음에 스택 선언을 T 횟수 반복문에 같이 안끼고 한번만 선언되게 작성해서 엄청 해멨었다.
728x90
반응형
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_10809번_알파벳 찾기 / C언어 (0) | 2021.09.02 |
---|---|
[BOJ] 백준_1934번_최소공배수 / C언어 (0) | 2021.09.01 |
[BOJ] 백준_10430번_나머지 (0) | 2021.09.01 |
[BOJ] 백준_2609번_최대공약수와 최소공배수 (0) | 2021.08.31 |
[BOJ] 백준_10845번_큐 (0) | 2021.08.26 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!