-
[4949] 균형잡힌 세상 - Java알고리즘 연습 2022. 2. 16. 22:05
1. 문제
https://www.acmicpc.net/problem/4949
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마
www.acmicpc.net
2. 풀이
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Stack <Character> stack = new Stack(); String str; // String case to read String answer; // default = yes while(true) { // 1. Read the String str = br.readLine(); // 2. See if the String is balanced char word; answer = "yes"; for(int i = 0; i < newStr.length(); i++){ word = newStr.charAt(i); // if stack is empty if(stack.isEmpty()) { // a. if closing parenthesis come first if((word == ')' || word == ']')) { answer = "no"; break; }else if(word == '(' || word == '[') { stack.push(word); } // stack not empty } else { if(stack.peek() == '(') { if(word == '(' || word == '[') { stack.push(word); }else if(word == ')') { stack.pop(); }else if(word == ']'){ answer = "no"; break; } }else if(stack.peek() == '[') { if(word == '(' || word == '[') { stack.push(word); }else if(word == ']') { stack.pop(); }else if(word == ')'){ answer = "no"; break; } } } } // 4. Final check if(!stack.isEmpty()) { answer = "no"; } // 5. Clear stack stack.clear(); // 7. End while loop if(str.equals(".")) { break; } // 6. Print result System.out.println(answer); } } }
3. 배운점
- 문제를 잘 읽어야 한다. 마지막 '.'은 종료 조건이며 결과 값은 출력하지 않아도 된다.
4. 개선할 점
'알고리즘 연습' 카테고리의 다른 글
[10866] 덱 - Java (0) 2022.02.17 [10820] 문자열 분석 - Java (0) 2022.02.17 [11767] 접미사 배열 - Java (0) 2022.02.15 [10845] 큐 - Java (0) 2022.02.10 [9012] 괄호 - Java (0) 2022.02.10