TIL 20241117 - 코테 풀다가 메모(2) 문자열 분할하기 (chunked)
보통 문자열을 분할하는 것이라고 하면 split을 사용했었다.
split는 문자를 기준으로 문자열을 분할해 List로 반환한다...
그래서 fun main() {
val data = "Hello-world"
val dataSplit = data.split("-")
println(dataSplit) //출력 : [Hello, world]
}
이것처럼 -를 기준으로 문자열을 분할하는 것이다....
내가 풀었던 문제는 문자를 기준으로 문자열을 분할하는 것이 아니라 숫자를 기준으로 분할하는 것이였다.
이처럼 m으로 문자열을 끊어주고 나눠준 거에 c번째만 result 값을 구하는 것이다.
그래서 찾아보니 chunked이라는 문법을 이용해서 구하면 된다고 한다.
chunked는 숫자를 기준으로 문자열을 분할해 List로 반환하는 것이라고!
fun main() {
val data = "HelloJutole"
val dataSplit = data.chunked(2)
println(dataSplit) //출력 : [He, ll, oJ, ut, ol, e]
}
이 예시처럼 숫자를 기준으로 문자열을 분할시킨다.
이를 바탕으로 위의 문제를 풀었다....
class Solution {
fun solution(my_string: String, m: Int, c: Int): String
= my_string.chunked(m).map { it[c - 1] }.joinToString("")
}
그래서 m기준으로 끊어주고 map로 돌려주었다... c는 몇번째이고....인덱스 기준으로 돌리기 위해서 1를 빼준 c-1로 작성해주었고... 리스트의 요소들을 빈 문자열("")로 구분하여 연결하기 위함으로 joinToString를 마저 작성 해주었다...
결과는 성공
진짜 모르는 문법이 수없이 많은 것 같다...
이렇게라도 조금씩 알아가는 건 좋은 듯
파이팅,,,
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/chunked.html
chunked - Kotlin Programming Language
kotlinlang.org