Machineboy空
9012 : 괄호 - stack, 그리디 알고리즘, getline(cin,s) 본문
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
문제요약
괄호 쌍이 모두 충족되는지
난이도
Silver 4
풀이 포인트
- stack 자료 구조
- getline(cin, t)
- cin : 공백(' ')이나 개행 문자(\n)를 만날 때까지 입력
- getline : 공백(' ')이나 개행 문자(\n)를 만날 때까지 한 줄 전체 입력.
//내가 했던 실수
3
((
))
())(()
int n; string s;
cin >> n; // 3입력
for(int i = 0; i <n; i++)
{
getline(cin,s);//첫째 줄 3 뒤에 남은 공백 혹은 개행 문자를 한줄로 읽게 됌
}
https://machineboy0.tistory.com/149
3986 : 좋은 단어 - 스택
https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드
machineboy0.tistory.com
스택 자료 구조를 이용한 쌍 Pop의 아이디어는 이 문제가 기본
REVIEW
늘상 입력 받는 게 가장 어렵다 참.
cin과 getline을 혼용해 받았더니 s에 축적이 안되더라.
근데 cin.ignore을 앞줄에 실행하고 받았더니 정상 작동. 입출력 하루 날잡고 정리해봐야겠다.
이제 스택 구조 이용한 pop 아이디어는 완벽히 숙지한듯 함!
CODE
#include <bits/stdc++.h>
using namespace std;
int n;
string s;
stack<char> vps;
int main()
{
cin >> n;
cin.ignore(); // 개행 문자를 처리하기 위해 추가
// 입력이 젤 어려움
for (int i = 0; i < n; i++)
{
getline(cin, s);
//cout <<"s는 " << s <<'\n';
for (int j = 0; j < s.length(); j++)
{
if (s[j] == '(')
{
//cout << "( 쌓임\n";
vps.push(s[j]);
}
else if (!vps.empty() && vps.top() == '(')
{
vps.pop();
//cout << "() 완성이라 pop\n";
}
else
{
//cout << ") 쌓임\n";
vps.push(s[j]);
}
}
if(vps.empty())cout <<"YES\n";
else cout << "NO\n";
while(!vps.empty()){
vps.pop();
}
}
}
'Computer > Coding Test' 카테고리의 다른 글
1325 : 효율적인 해킹 - dfs, 인접리스트, 정렬 (0) | 2024.02.19 |
---|---|
17298 : 오큰수 - stack, 짝짓기 (1) | 2024.02.19 |
1436 : 영화감독 숌 - 숫자, 문자 변환 / 브루트 포스 (0) | 2024.02.16 |
3474 : 교수가 된 현우 - 소인수 분해, ios_base::sync_with_studio(false);cin.tie(NULL);cout.tie(NULL) (1) | 2024.02.15 |
10709 : 기상캐스터 - if 조건부 구성 (2) | 2024.02.15 |