개발후라이
개발후라이
개발후라이
  • 분류 전체보기 (287)
    • Web Front End (76)
      • Javascript & Typescript (26)
      • React (12)
      • Vue (4)
      • Nodejs (1)
      • HTML (6)
      • CSS (8)
      • HTTP (6)
      • 책 - Review (8)
    • TIL (0)
    • Problem Solved (135)
      • 알고리즘 (4)
      • BOJ (67)
      • Programmers (8)
      • HackerRank (33)
      • LeetCode (23)
    • 회고 (4)
      • 오늘의 회고 (16)
      • 주간 회고 (15)
      • 월간 회고 (7)
      • WakaTime (9)
    • Git (3)
    • 기타 (15)
      • 취업 (5)
      • 자격증 (1)

블로그 메뉴

  • GitHub
  • LinkedIn
  • 홈

인기 글

태그

  • 노마드북클럽
  • 오늘의회고
  • TypeScript
  • 개발자
  • 노개북
  • 회고
  • 자바스크립트
  • 프론트엔드
  • 릿코드
  • JavaScript

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
개발후라이

개발후라이

Problem Solved/BOJ

[BOJ][Java] 4949번 - 균형잡힌 세상

2020. 2. 23. 00:13
반응형

문제

백준 4949번 문제: 균형잡힌 세상

문제 설명

위(괄호 문제)와 같은데 괄호의 종류가 다양해진 문제

  • [BOJ][Java] 9012번 - 괄호 문제의 응용 문제이다.
  • 나는 괄호 문제에서 조건만 추가해서 답을 구했다.

추가 조건

  1. .이 오면 멈춰야 하므로 while문으로 변경했다.
  2. 문자열 .이 오면 while문 중지하도록 했다.
  3. 소괄호()일 때와 대괄호[]일 때의 조건을 분리해 스택에 쌓이고 빠질 수 있도록 했다.
  4. 이 때, [)와 같은 짝이 맞지 않는 괄호가 true가 되는 것을 막기 위해 stack.peek() == "(" 조건을 추가해 주었다.

성공 코드

import java.util.Scanner;
import java.util.Stack;

public class Main {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);

        while (true){
            Stack<String> stack = new Stack<String>();
            String k = s.nextLine();
            if (k.equals(".")) break;
            boolean small = true;
            boolean big = true;

            for (int j = 0; j < k.length(); j++){
                if ( '(' == k.charAt(j) ) {stack.push("(");}
                else if ( ')' == k.charAt(j) ) {
                    if (!stack.isEmpty() && stack.peek() == "(") {
                        stack.pop();
                        }
                    else {
                        small = false;
                        break;
                    }
                }

                else if ( '[' == k.charAt(j) ) {stack.push("[");}
                else if ( ']' == k.charAt(j) ) {
                    if (!stack.isEmpty() && stack.peek() == "[") {
                        stack.pop();
                        }
                    else {
                        big = false;
                        break;
                    }
                }
            }


            if (!stack.isEmpty()) small = false;
            else if (!stack.isEmpty()) big = false;
            System.out.println(small && big ? "yes" : "no");
        }
    }

}
반응형
저작자표시 (새창열림)
    'Problem Solved/BOJ' 카테고리의 다른 글
    • [BOJ][Nodejs] 1676번 - 팩토리얼 0의 개수
    • [BOJ][Java] 9012번 - 괄호
    • [BOJ][Java] 10773번 - 제로
    • [BOJ][Java] 10828번 - 스택
    개발후라이
    개발후라이
    어제보다 오늘 발전하기 위한 공간 https://github.com/choisohyun

    티스토리툴바