1. 문제 링크
2. 문제 및 입출력예제
3. 문제 풀이
균형잡힌 문자열인지 판단하는 것으로 Stack을 사용했다.
열린 괄호와 닫힌 괄호 각각에 대해 조건을 걸어서 균형이 맞지 않다면 끝이다.
끝까지 균형이 맞았을 경우에는 스택에 남은 것이 없는지 확인하여 결과를 출력했다.
4. 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while(true) {
String str = br.readLine();
if(str.equals(".")) {
break;
}
Stack<Character> stack = new Stack<>();
boolean flag = true;
for(int i=0;i<str.length();i++) {
switch (str.charAt(i)) {
case '[':
stack.push('[');
break;
case '(':
stack.push('(');
break;
case ')':
if(stack.size()==0) {
flag = false;
break;
}
if(stack.peek() != '(') {
flag = false;
}
stack.pop();
break;
case ']':
if(stack.size()==0) {
flag = false;
break;
}
if(stack.peek() != '[') {
flag = false;
}
stack.pop();
break;
}
if(!flag) {
break;
}
}
if(flag && stack.size()==0) {
sb.append("yes").append("\n");
}
else {
sb.append("no").append("\n");
}
}
System.out.println(sb);
}
}
'ALGORITHM' 카테고리의 다른 글
백준 13549 숨바꼭질 3 (Java) (1) | 2023.05.20 |
---|---|
백준 21611 마법사 상어와 블리자드 (Java) (0) | 2023.05.19 |
백준 2310 어드벤처 게임 (Java) (0) | 2023.05.17 |
백준 2178 미로 탐색 (Java) (0) | 2023.05.16 |
백준 9019 DSLR (Java) (0) | 2023.05.15 |