Sting을 분해해서 비교하는 문제
주어진 String을 어떻게 끊어야할지 고민하다가 일단 되는대로 반복문으로 나눔
class Solution {
fun solution(t: String, p: String): Int {
var answer: Int = 0
var list = mutableListOf<String>()
var count = 0
for ( i in 0..t.length-p.length){
var s = ""
for(j in 0 until p.length){
s += t[count+j]
}
count++
list.add(s)
}
for (i in list){
if( i.toInt() <= p.toInt()){
answer++
}
}
println(list)
return answer
}
}
제출 후 채점했더니 몇몇 문제에서 런타임오류가 생김
-> p의 길이가 18까지라 Int로 할 때 범위가 넘어가서 생긴 오류
Int를 Long으로 바꿔줌
class Solution {
fun solution(t: String, p: String): Int {
var answer: Int = 0
var list = mutableListOf<String>()
var count = 0
for ( i in 0..t.length-p.length){
var s = ""
for(j in 0 until p.length){
s += t[count+j]
}
count++
list.add(s)
}
for (i in list){
if( i.toLong() <= p.toLong()){
answer++
}
}
return answer
}
}
class Solution {
fun solution(t: String, p: String): Int {
return (0..t.length - p.length)
.map{ t.substring(it until it + p.length) }
.count { it <= p }
}
}
.substring는 index를 이용해 문자열의 특정부분을 추출할 수 있다.
문자열끼리도 비교해 답을 낼 수 있다.
text.substring(6) // 문자열의 6번인 인덱스부터 끝까지 반환
text.substring(2,3) // 문자열의 2번에서 3번 인덱스의 문자열 반환