드디어 stack 자료 구조를 배우고 이 문제를 다시 풀었다!
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
입력된 String의 i번째 character가 ')' 인 경우 : stack에 아무것도 남아있지 않는 상태인 경우 곧바로 VPS가 아님을 알 수 있다.
(만약 stack에 무언가가 남아있다면 그것은 반드시 '('일 것이다!)
입력된 String의 i번째 character가 '(' 인 경우 : 다음에 오는 것이 ')'라면 ()가 만나기 때문에 pop되어 사라진다.
반대로 다음에 오는 것이 '('라면 그대로 추가해주면 된다.
import java.util.*;
import java.io.*;
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 t = 0; t < T; t++) {
Stack<Character> stack = new Stack<>();
String str = br.readLine();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c == '(') {
stack.push(c);
} else {
if (stack.isEmpty()) {
stack.push(c);
break;
} else stack.pop();
}
}
if (stack.isEmpty()) System.out.println("YES");
else System.out.println("NO");
}
}
}
Yes, No로 출력되게끔 코드를 짜서 문제를 몇번 틀렸다,,
문제를 잘 읽자!
'BOJ' 카테고리의 다른 글
[BOJ] [JAVA] 24060번 알고리즘 수업 - 병합 정렬 1 (0) | 2024.01.14 |
---|---|
[BOJ] [JAVA] 20920번 영단어 암기는 괴로워 (0) | 2024.01.14 |
[BOJ] [JAVA] 1016번 제곱 ㄴㄴ 수 (2) | 2024.01.11 |
[BOJ] [JAVA] 11866번 요세푸스 문제0 (0) | 2024.01.10 |
[BOJ] [JAVA] 4134번 다음 소수 (0) | 2024.01.07 |
[BOJ] [JAVA] 13241번 최소공배수 (0) | 2024.01.06 |
[BOJ] [JAVA] 10816번 숫자 카드 2 (0) | 2024.01.06 |
[BOJ] [JAVA] 7785번 회사에 있는 사람 (0) | 2024.01.06 |