TIL #7

loci·2024년 5월 6일
0

TIL

목록 보기
7/103



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번 인덱스의 문자열 반환 
profile
편리한 개발자

0개의 댓글