Algorithm/BOJ(Baekjoon Online Judge)
[백준 4949번] 균형잡힌 세상 - Java //Wello Horld//
koucop
2019. 6. 29. 17:03
이 세상이 균형잡힌 세상인지 알아봅시다
문제를 보자마자 LIFO 방식으로 접근하면 쉽게 풀 수 있을 것 같아서 stack을 이용했습니다
'(' 와 '[' 을 입력받았을 때 stack 에다가 집어넣고, ')' 와 ']' 를 입력 받을 때 stack에서 집어넣은 값을 꺼내서 균형잡혀 있는지 확인해 줬습니다
if(c == '(' || c == '['){
stack.add(c);
} else if(c == ')'){
if(!stack.empty() && stack.pop() == '(') continue;
else {
chk = false;
break;
}
} else if(c == ']') {
if(!stack.empty() && stack.pop() == '[') continue;
else {
chk = false;
break;
}
}
stack.pop()을 해줄 때 stack에 아무것도 없으면 오류가 뜨니, !stack.empty() 로 에러를 피해주고, 동시에 '(' 와 '[' 가 처음에 들어올 경우를 감지해 줬어요
if(chk && stack.isEmpty()) bw.write("yes\n");
else bw.write("no\n");
균형잡혀 있는지는 chk라는 boolean변수를 이용해서 확인해 주었고, 마지막에 stack.empty()인지 확인해주어서 stack 에 아무것도 없음을 확인해 주었어요
import java.io.*;
import java.util.*;
public class sample{
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = 0;
while(t == 0) {
String line = br.readLine();
if(line.equals(".")) break;
boolean chk = true;
Stack<Character> stack = new Stack<Character>();
for(int i = 0; i < line.length(); i++){
char c = line.charAt(i);
if(c == '(' || c == '['){
stack.add(c);
} else if(c == ')'){
if(!stack.empty() && stack.pop() == '(') continue;
else {
chk = false;
break;
}
} else if(c == ']') {
if(!stack.empty() && stack.pop() == '[') continue;
else {
chk = false;
break;
}
}
}
if(chk && stack.isEmpty()) bw.write("yes\n");
else bw.write("no\n");
}
bw.flush();
br.close();
bw.close();
}
}
야레야레 어렵지는 않은 문제네요
모두들 즐거운 주말코딩 되세요~~