[프로그래머스] 괄호 회전하기(Kotlin)

0

프로그래머스

목록 보기
118/128
post-thumbnail

[프로그래머스] 괄호 회전하기(Kotlin)

풀이

import java.util.*

class Solution {
    //Char 확장함수, 여는 괄호일 경우 true 반환
    fun Char.isOpen():Boolean{
        if((this == '(')||(this == '{')||(this == '['))return true
        return false
    }
    
    fun isCorrect(s:String):Boolean{
        var stack = Stack<Char>()
        for(ch in s){
            //여는 괄호일 경우
            if(ch.isOpen()) stack.push(ch)
            //닫는 괄호일 경우
            else{
                if(stack.isNotEmpty()){
                    val peekCh = stack.peek()
                    if((ch == ')')  && (peekCh == '(')) stack.pop()
                    else if((ch == '}')  && (peekCh == '{')) stack.pop()
                    else if((ch == ']')  && (peekCh == '[')) stack.pop()
                    else return false;
                }
                else return false;
            }
        }
        if(stack.isNotEmpty()) return false
        return true;
    }
    
    fun solution(s: String): Int {
        var answer: Int = 0
        
        for(i in 0 .. s.length-1){
            //문자열 i만큼 왼쪽으로 회전시키기
            val newS = s.substring(i, s.length)+s.substring(0, i)
            if(isCorrect(newS)) answer++
        }
        return answer
    }
}
profile
Be able to be vulnerable, in search of truth

0개의 댓글