상세 컨텐츠

본문 제목

균형잡힌 세상(백준)

코딩테스트

by dofury 2023. 7. 5. 17:37

본문

728x90

package com.example.algorithm

import java.util.*


fun main(){

    while (true){
        val stack = Stack<Char>()
        var isBalance = true
        val test = readLine()!!
        if(test == "."){
            break
        }

        for(c in test){
            if(c == '(' || c== '[' || c == '{'){
                stack.add(c)
            }

            if(c == ')'){
                if(stack.empty() || stack.pop() != '('){
                    isBalance = false
                }
            }
            if(c == '}'){
                if(stack.empty() || stack.pop() != '{'){
                    isBalance = false
                }
            }
            if(c == ']'){
                if(stack.empty() || stack.pop() != '['){
                    isBalance = false
                }
            }
        }
        if(!stack.empty()){//스택이 비어있지 않다면
            isBalance = false
        }
        if(isBalance){
            println("yes")
        }else{
            println("no")
        }
    }


}

괄호에 대해 쌍을 지어야 하는 문제므로 괄호의 시작을 만날 때 스택에 집어넣고,

닫는 괄호가 나올시 스택에서 꺼내어 비교하는 방식으로 구현했다.

 

해당 방식으로만 구현하니 시작괄호만 존재할경우 균형이 잡혀있다고 나와

반복이 끝난 후 스택의 무언가가 남아있다면 균형이 잡혀있지않다고 값을 조절해주었다.

728x90

'코딩테스트' 카테고리의 다른 글

스택(백준)  (0) 2023.07.07
통계학(백준)  (0) 2023.07.06
프린터 큐(백준)  (0) 2023.07.04
수 찾기(백준)  (0) 2023.07.03
체스판 다시 칠하기(백준)  (0) 2023.06.30

관련글 더보기

댓글 영역