-
[백준 4949번] 균형잡힌 세상 - Java //Wello Horld//Algorithm/BOJ(Baekjoon Online Judge) 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(); } }
야레야레 어렵지는 않은 문제네요
모두들 즐거운 주말코딩 되세요~~
'Algorithm > BOJ(Baekjoon Online Judge)' 카테고리의 다른 글
[백준 3052번] 나머지 - Java //Wello Horld// (0) 2019.07.04 [백준 17293번] 맥주 99병 - Java //Wello Horld// (1) 2019.06.29 [백준 17295번] 엔드게임 스포일러 - Java //Wello Horld// (0) 2019.06.29 [백준 17294번] 귀여운 수~ε٩(๑> ₃ <)۶з - Java //Wello Horld// (0) 2019.06.27 [백준 15596번] 정수 N개의 합 - Java //Wello Horld// (0) 2019.06.27