풀이
class Solution {
fun solution(s: String): Int {
var anwer = 0
for (i in 0 until s.length) {
//순환
val sList = s.substring(i) + s.substring(0, i)
// 여는 괄호 시 sCheck에 추가
val sCheck = mutableListOf<Char>()
var isValid = true
for (c in sList) {
when (c) {
'(', '[', '{' -> sCheck.add(c)
')' -> if (sCheck.isEmpty() || sCheck.removeAt(sCheck.lastIndex) != '(') {
isValid = false
break
}
']' -> if (sCheck.isEmpty() || sCheck.removeAt(sCheck.lastIndex) != '[') {
isValid = false
break
}
'}' -> if (sCheck.isEmpty() || sCheck.removeAt(sCheck.lastIndex) != '{') {
isValid = false
break
}
}
}
if (isValid && sCheck.isEmpty()) anwer++
}
return anwer
}
}
한 번에 풀지는 못했다. 질문하기에서 힌트를 얻고 문제를 풀었다.
sCheck를 사용해서 여는 괄호가 나오면 추가하고
닫는 괄호가 나올 때 해당하는 짝을 제거하는 형식으로 문제를 풀었다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스_Kotlin] 연속 부분 수열 합의 개수 (0) | 2024.04.15 |
---|---|
[프로그래머스_Kotlin] 귤 고르기 (0) | 2024.04.11 |
[프로그래머스_Kotlin] 멀리 뛰기 (1) | 2024.04.08 |
[프로그래머스_Kotlin] N개의 최소공배수 (0) | 2024.04.05 |
[프로그래머스_Kotlin] 예상 대진표 (0) | 2024.04.04 |