반응형
문제
문제 설명
주어진 문자열이 올바른 괄호열인지 판단하는 문제
문제 풀이
- 입력 데이터의 수(n)만큼 반복문을 돈다.
- 빈
스택
과vps
판별 boolean 값을 초기값으로 둔다. - 문자열 하나씩 비교하기 위해 문자열 길이만큼 반복문을 돈다.
(
이면 스택에 넣는다.)
이면서 스택이 비어있지 않으면 스택에 있는 마지막 요소를 pop하여 제거한다.
- 여기서 스택에서 제거하는 이유는,
vps
라면 짝이 맞기 때문에 마지막에는 스택이 비워져야 맞는 것이기 때문이다.
)
이면서 스택이 비어 있으면 (가 스택에 없다는 뜻이므로 vps를false
로 바꾸고 for문을 멈춘다.- 만약 반복문을 다 돌았는데 스택이 비어있지 않다면 vps를 false로 변경해 예외 처리를 해 준다.
- vps가 true이면
YES
, false이면NO
를 출력한다.
성공 코드
import java.util.Scanner;
import java.util.Stack;
public class Main{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
int n = s.nextInt();
for (int i = 0; i < n; i++){
Stack<String> stack = new Stack<String>();
String k = s.next();
boolean vps = true;
for (int j = 0; j < k.length(); j++){
if ( '(' == k.charAt(j) ) {stack.push("(");}
else if ( ')' == k.charAt(j) ) {
if (!stack.isEmpty()) {stack.pop();}
else {
vps = false;
break;
}
}
}
if (!stack.isEmpty()) vps = false;
System.out.println(vps? "YES" : "NO");
}
}
}
반응형