문제
괄호들이 문자열 s에 담겨있으며, 문자열 s를 왼쪽으로 한칸씩 이동시킬 때, 올바른 괄호들만 있는 문자열 s가 몇 개인지 구하는 문제
풀이 과정
- StringBuilder() 로 문자열 회전
- 열림 괄호는 + , 닫힘 괄호는 -로 Map에 저장 후
- - 값이 나왔을 때 이전 인덱스의 값과 더해 0이면 정상 괄호 0이 아니면 비정상
코드
class Solution {
fun solution(s: String): Int {
var answer: Int = 0
val sb = StringBuilder(s)
val map : Map<Char, Int> = mapOf(
Pair('[', 1), Pair(']', -1),
Pair('{', 2), Pair('}', -2),
Pair('(', 3), Pair(')', -3))
for(i in s.indices){
val tmp = ArrayList<Int>()
for(a in sb){
if(map.get(a)!! > 0) tmp.add(map.get(a)!!)
else{
if(tmp.size == 0) {
tmp.add(map.get(a)!!)
break
}
if(tmp[tmp.size-1] + map.get(a)!! == 0) tmp.removeAt(tmp.size-1)
else break
}
}
if(tmp.size == 0) answer ++
//왼쪽으로 회전
sb.apply{
append(sb[0])
deleteAt(0)
}
}
return answer
}
}
'코딩 테스트 > Lv.2' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 만들기 with Kotlin (0) | 2024.03.05 |
---|---|
[프로그래머스] K진수에서 소수 개수 구하기 with Kotlin (0) | 2023.11.30 |
[프로그래머스] 귤 고르기 with Kotlin (0) | 2023.11.07 |
[프로그래머스] N개의 최소공배수 with Kotlin (0) | 2023.11.07 |
[프로그래머스] 카펫 with Kotlin (0) | 2023.11.07 |