728x90
문제
https://www.acmicpc.net/problem/4949
접근 방법
- '(' 가 있을때는 ')' 이것이 나와야 짝을이루고 '[' 이것이 있을때는 ']' 이것이 있어야 짝을 지으며 사라집니다.
- 따라서 스택을 이용해서 짝을 맞추어 삭제하고, 스택이 비어있거나 스택 최상단이 짝이 맞지 않으면 빠르게 리턴해 줍니다.
- 마지막에 스택이 비워졌으면 yes를 스택에 그래도 남아있으면 (짝이 맞지 않으면) no를 리턴해줍니다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
private static StringBuilder sb;
private static BufferedReader br;
private static Stack<Character> stack;
//입력
public static void input() throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
while (true) {
String line = br.readLine();
if(line.charAt(0) == '.') break;
sb.append(process(line)).append("\n");
}
}
//실행
public static String process(String line) {
stack = new Stack<>();
for(int i = 0 ; i < line.length(); i++){
char c = line.charAt(i);
if(c == '(' || c == '['){
stack.push(c);
}else if(c ==')'){
if(stack.isEmpty() || stack.peek() !='('){
return "no";
}else{
stack.pop();
}
}else if(c==']'){
if(stack.isEmpty() || stack.peek() !='['){
return "no";
}else{
stack.pop();
}
}
}
if(stack.isEmpty()) return "yes";
return "no";
}
public static void main(String[] args) throws Exception {
input();
System.out.println(sb);
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 9012번 : 괄호 (0) | 2024.05.06 |
---|---|
[Java] 백준 7568번 : 덩치 (0) | 2024.05.06 |
[Java] 백준 4153번 : 직각삼각형 (0) | 2024.05.03 |
[Java] 백준 2869번 : 달팽이는 올라가고 싶다 (0) | 2024.05.03 |
[Java] 백준 2839번 : 설탕 배달 (0) | 2024.05.03 |