시간&메모리 제한
문제
입력&출력
문제풀이
package com.Back;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Back_4949 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while(true) {
String temp = br.readLine();
Stack<String> arr = new Stack<String>();
if(temp.charAt(0)=='.') {
break;
}
for (int i = 0; i < temp.length(); i++) {
if(temp.charAt(i)=='(' || temp.charAt(i)=='[') {
arr.add(Character.toString(temp.charAt(i)));
continue;
}else if(temp.charAt(i)==')') {
if(arr.size()!=0 && arr.peek().charAt(0)=='(') {
arr.pop();
continue;
}
arr.add(Character.toString(temp.charAt(i)));
break;
}
else if(temp.charAt(i)==']') {
if(arr.size()!=0 && arr.peek().charAt(0)=='[') {
arr.pop();
continue;
}
arr.add(Character.toString(temp.charAt(i)));
break;
}
}
if(arr.size()==0) {
sb.append("yes\n");
}else {
sb.append("no\n");
}
}
System.out.println(sb);
}
}
- 이 문제는 자료구조를 이용하는 문제입니다. 그 중에서 Stack를 이용하면 쉽게 풀 수 있습니다.
- 3가지 case에 대해서 조심해야 합니다
- 괄호의 갯수가 안맞는 경우
Stack의 사이즈로 예외 처리를 해주면 됩니다.
- 괄호의 순서가 안맞는 경우
( [ ) ] 의 순서는 틀리다는 것을 예외 처리 해줘야 한다.
- 처음부터 ) ] 가 나오는 경우
예외 처리 했을 때 잘못된 것을 추가하지 않으면, 비어있는걸로 되서 yes가 출력이 된다.
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
백준_1764 듣보잡(자바) / 문자열 (0) | 2021.07.07 |
---|---|
백준_10773 제로(자바) / 자료구조 (0) | 2021.07.06 |
백준_1010 다리 놓기(자바) /DP (0) | 2021.07.05 |
백준_1495 기타리스트(자바) / DP (0) | 2021.05.15 |
백준_2210 숫자판 점프(자바) / DFS + 백 트래킹 (0) | 2021.05.14 |