본문 바로가기
프로그래밍/알고리즘 문제풀이

[프로그래머스] [kotlin] 괄호 회전하기

by 엽기토기 2022. 2. 24.
반응형
import java.util.*

//
//fun main() {
//    print(solution("([{)}]"))
//}

var deque: MutableList<Char> = mutableListOf()

fun solution(s: String): Int {
    var answer: Int = 0
    if (s.length == 1) return 0

    for (i in s.indices) {
        deque.add(s[i])
    }
    for (i in s.indices) {
        rotate()
        if (isRight()) answer++
    }

    return answer
}

fun rotate() {
    deque.add(deque.first())
    deque.removeAt(0)
}

fun isRight(): Boolean {
    val stack = Stack<Char>()

    deque.forEach {
        if (it == '[' || it == '{' || it == '(') {
            stack.add(it)
        } else if (it == ']') {
            if (!stack.empty() && stack.peek() == '[') {
                stack.pop()
            } else {
                return false
            }
        } else if (it == '}') {
            if (!stack.empty() && stack.peek() == '{') {
                stack.pop()
            } else {
                return false
            }
        } else if (it == ')') {
            if (!stack.empty() && stack.peek() == '(') {
                stack.pop()
            } else {
                return false
            }
        }
    }
    return stack.isEmpty()
}
반응형