반응형
자세한 문제는 여기서 확인하시면 됩니다.
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 |