https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
이 문제는 스택을 활용한 가아아아아아장 대표적인 문제다. 코드에 주석으로 각 라인이 어떤 것을 의미하는지 달아놨다,
public static String solution(String str) {
String result = "YES";
//스택 선언
Stack<Character> stack = new Stack<>();
for (char x : str.toCharArray()) {
//해당 문자일 경우 스택에 push
if (x == '(') stack.push(x);
else {
// ) 해당 문자일 때 스택이 비어있다면 이미 잘못된 문자
if (stack.isEmpty()) return "NO";
//스택에서 '(' 문자 pop
stack.pop();
}
}
//for문이 다 돌았는데 스택이 비어있지 않은 case
//()()( <- 이런 케이스들이라고 볼 수 있다.즉 앞에는 정상적으로 쌍을 이루었지만 마지막이 달라서 틀린 경우이다.
if (!stack.isEmpty()) return "NO";
return result;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
String[] strArr = new String[size];
for (int i = 0; i < size; i++) {
strArr[i] = in.next();
}
for (int i = 0; i < size; i++) {
System.out.println(solution(strArr[i]));
}
}
'개발 > PS' 카테고리의 다른 글
[프로그래머스]프로세스(java) (0) | 2023.06.30 |
---|---|
[프로그래머스]크레인 인형뽑기 게임(java) (0) | 2023.06.29 |
[프로그래머스]추억 점수(java) (0) | 2023.06.28 |
[프로그래머스]의상(java) (0) | 2023.06.28 |
[프로그래머스]포켓몬(java) (0) | 2023.06.28 |