Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Baekjoon
- 5597번
- 오블완
- 14592번
- 14656번
- 1362번
- 2355번
- 14467번
- 21964
- 10814번
- 1141번
- 1568번
- 나무 공격
- 프로젝트 기획서
- 24267번
- 25576번
- 20953번
- 14726번
- 21866번
- 25904번
- 25642번
- 14322번
- Java
- 백준
- 자바
- 14215번
- 1333번
- 10409번
- 7489번
- 티스토리챌린지
Archives
- Today
- Total
suheang
[백준] | JAVA, 자바 | 9012번 - 괄호 본문
https://www.acmicpc.net/problem/9012
문제 요약 :
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다.
입력으로 주어진 괄호 문자열이 VPS 인지 아닌지를 판단해서 그 결과를 YES 와 NO 로 나타내어야 한다.
문제 풀이 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
for (int i = 0; i < t; i++) {
String s = br.readLine();
Stack<String> stack = new Stack<>();
boolean vps = true;
for (int j = 0; j < s.length(); j++) {
String check = String.valueOf(s.charAt(j));
if (check.equals("(")) {
stack.push(check);
} else {
if (stack.isEmpty()) {
vps = false;
break;
} else {
stack.pop();
}
}
}
if (vps && stack.isEmpty()) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
}
1. 테스트 데이터 개수 t 입력받기
2. 입력받은 t 만큼 문자열 입력받기
2 - 1. 스택 생성
2 - 2. vps 인지 확인할 boolean 변수 vps를 true로 생성
2 - 3. 입력받은 문자열을 한 글자씩 가져와서 "("이라면 스택에 저장
2 - 4. "(" 이 아닐 때 스택이 비어있다면 vps를 false로 변경하고 for 문 종료, 그렇지 않다면 스택에서 꺼내기
2 - 5. 만약 vps가 true고 스택이 비어있다면 "YES" 출력, 그렇지 않다면 "NO" 출력
(스택이 비어있는지까지 확인하는 이유는 짝이 없는 "(" 가 있다면 boolean vps 값은 true이지만 VPS가 아니기 때문)
'알고리즘' 카테고리의 다른 글
[백준] | JAVA, 자바 | 21736번 - 헌내기는 친구가 필요해 (0) | 2024.08.30 |
---|---|
[백준] | JAVA, 자바 | 31575번 - 도시와 비트코인 (0) | 2024.08.29 |
[백준] | JAVA, 자바 | 10773번 - 제로 (0) | 2024.08.28 |
[백준] | JAVA, 자바 | 28278번 - 스택 2 (0) | 2024.08.28 |
[백준] | JAVA, 자바 | 11047번 - 동전 0 (0) | 2024.08.27 |