![[백준 4949번 / Java] 균형잡힌 세상](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGmbxH%2FbtslMWB1jz1%2FkRnYVmnINgVE3yVLWKjxNk%2Fimg.png)
[백준 4949번 / Java] 균형잡힌 세상코딩테스트/백준2023. 7. 1. 09:44
Table of Contents
728x90
728x90
문제 링크
https://www.acmicpc.net/problem/4949
4949번: 균형잡힌 세상
각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에
www.acmicpc.net
풀이
단순 구현문제로 딱히 설명할 것은 스택을 사용했다 정도?
스택이 해당 문제를 풀기에 딱 적합했던 이유는 바로 이전에 등장했던 괄호를 꺼내보기 쉽다는 것(LIFO)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class BaekJoon4949 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null){
if(line.equals(".")) break;
Stack<Character> stack = new Stack<>();
boolean chk = false;
for(char c : line.toCharArray()){
if(c == '(' || c == '[') stack.add(c);
if((c == ')' || c == ']') && stack.isEmpty()) {
sb.append("no\n");
chk = true;
break;
}
if(c == ')' && stack.peek() != '(') {
sb.append("no\n");
chk = true;
break;
}
if(c == ']' && stack.peek() != '[') {
sb.append("no\n");
chk = true;
break;
}
if((c == ')' && stack.peek() == '(') || (c == ']' && stack.peek() == '[')){
stack.pop();
}
}
if(!chk){
if(stack.isEmpty()) sb.append("yes\n");
else sb.append("no\n");
}
}
System.out.println(sb);
}
}
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!