본문 바로가기
2023년 이전/Codility

Lesson 7 - Nesting

by JeongUPark 2020. 1. 7.
반응형

자세한 문제는 여기서 확인하시면 됩니다.

 

Stirng 인 ( , )가 알맞게 짝을 이루면 1 아니면 0을 반환합니다. (비었을 경우에도 1입니다.)

ex) "(()(())())"면 1 이고 "())"면 0 입니다.

fun solution(S: String): Int {
    var result = 0
    if(S.isEmpty()){
        return 1
    }
    var stack = mutableListOf<String>()
    if(S[0].toString() == ")") return 0

    for(i in S.indices){
        if(S[i].toString() == ")"){
            if(stack.size > 0){
                stack.pop_nest()
            }else if(stack.size == 0){
                return 0
            }
        }else if(S[i].toString() == "("){
            stack.push_nest(S[i].toString())
        }
    }
    return if(stack.size > 0 ){
        0
    }else{
        1
    }
}


fun MutableList<String>.push_nest(str:String){
    this.add(str)
}
fun MutableList<String>.pop_nest() : String{
    val result = this.last()
    this.removeAt(this.size-1)
    return result
}

간단하게 stack에 "("을 넣고 ")"만날 때마다 stack에서 "("을 꺼냅니다. 만일 ")"을 만났는데 stack이 비었으면 잘못된 짝이므로 0을 반환합니다. 모든 문자열을 다 사용했는데 stack에 "("가 남아있으면 잘못된 짝이 되므로 이때도 0을 반환합니다.

반응형

'2023년 이전 > Codility' 카테고리의 다른 글

Lesson 6 - NumberOfDicIntersection  (0) 2020.01.20
Lesson7 - fish  (0) 2020.01.20
Lesson10 - Peaks  (0) 2020.01.06
Lesson 10 - CountFacotrs  (0) 2020.01.06
Lesson 9 - MaxProfit  (0) 2020.01.06