<문제 4949 - 균형잡힌 세상>
[문제]
[답안]
import java.io.*;
import java.util.Stack;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str;
while (true){
Stack<Character> stack = new Stack<Character>(); // stack 선언 - Character 클래스 메소드
str = br.readLine(); // 입력받기
if (str.equals(".")) break; // 만약 '.'이 들어오면 종료
int a = -1; // 조건문을 위한 변수 a
int b = -1; // 조건문을 위한 변수 b
for (int i = 0; i < str.length(); i++) { // 문자열의 길이만큼 반복
char ch = str.charAt(i);//문자열의 i번째
switch (ch){ // '('인 경우
case '(':
stack.push(ch); // stack에 해당값을 넣어준다
a++;
break;
case '[': // ')'인 경우
stack.push(ch); // stack에 해당값을 넣어준다
b++;
break;
case ')' : // ')'인 경우
if (a >= 0 && stack.peek() == '('){ // a가 1개 이상있고, 맨위값이 '('인 경우
stack.pop(); // 맨위 값을 return + 제거
a--;
}else a--;
break;
case ']':
if (b >= 0 && stack.peek() == '['){ // b가 1개 이상있고, 맨위값이 '['인 경우
stack.pop();// 맨위 값을 return + 제거
b--;
}else b--;
break;
default: break;
}
}
if (a == -1 && b == -1 && stack.size() == 0){ // 최초 a, b값이면서 stack이 가지고 있는 원소가 없을 때
bw.write("yes\n"); // "yes" 출력
}else bw.write("no\n"); // 아니면 "no" 출력
stack.clear(); // stack 비우기
}
bw.flush();
bw.close();
br.close();
}
}
Stack 이용문제
'알고리즘 풀이(JAVA) > 백준' 카테고리의 다른 글
[백준] 문제번호 10845 (큐)(java) (0) | 2022.10.04 |
---|---|
[백준] 문제번호 1463 (1로 만들기)(java) (0) | 2022.09.27 |
[백준] 문제번호 10773 (제로)(java) (0) | 2022.08.19 |
[백준] 문제번호 1152 (단어의 개수)(java) (0) | 2022.08.17 |
[백준] 문제번호 2908 (상수)(java) (0) | 2022.08.17 |