풀이 과정
- 9012 괄호 문제랑 비슷하게 진행
- '(' 또는 '[' 왼쪽 괄호를 만나면 스택에 푸시
- ')' 또는 ']' 오른쪽 괄호를 만났을 때 스택이 비어 있거나 짝이 맞지 않은 경우에는 false
짝이 맞으면 pop을 해줌
- 모든 검사를 마쳤을 때 스택에 남아 있는 요소가 있다면 false
정답
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));
while(true)
{
String s = br.readLine();
Stack<Character>stack = new Stack<Character>();
boolean check=true;
if(s.equals("."))
break;
for(int i=0; i<s.length(); i++)
{
char c = s.charAt(i);
//왼쪽 괄호들을 만나면 스택에 푸시
if(c=='('||c=='[')
{
stack.push(c);
}
//오른쪽 ')'을 만났을 때
else if(c==')')
{
//스택이 비어 있거나 '['인 경우에는 check false
if(stack.isEmpty()|| stack.peek()!='(')
{
check=false;
}
else
{
stack.pop();
}
}
//오른쪽 ']'을 만났을 때
else if(c==']')
{
//스택이 비어 있거나 '('인 경우에는 check false
if(stack.isEmpty() || stack.peek()!='[')
{
check=false;
}
else
{
stack.pop();
}
}
}
//모든 검사를 마쳤는데 스택에 남은 괄호가 있을 경우
if(!stack.isEmpty())
{
check=false;
}
if(check)
{
System.out.println("yes");
}
else
{
System.out.println("no");
}
}
}
}
'Java > 백준' 카테고리의 다른 글
[JAVA] 백준 13241 최소공배수 (1) | 2024.02.10 |
---|---|
[JAVA] 백준 12789 도키도키 간식드리미 (1) | 2024.02.10 |
[JAVA] 백준 9012 괄호 (0) | 2024.02.08 |
[JAVA] 백준 10773 제로 (0) | 2024.02.08 |
[JAVA] 백준 28278 스택 2 (0) | 2024.02.08 |