본문 바로가기
코딩테스트

[프로그래머스] 0 떼기

by liz_devel 2025. 2. 9.

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(n_str: String): String {
        val index = n_str.mapIndexedNotNull{i,v -> if(v != '0') i else null}.first()
       return n_str.slice(index..n_str.length - 1)
    }
}

 


📝 다른 사람의 문제 풀이

이번에는 다른 사람 문제 풀이를 봤는데 다양하게 신박한 풀이가 많아서 여러 개를 첨부해 보았다.

class Solution {
    fun solution(n_str: String): String {
        return n_str
            .dropWhile { it == '0' }
    }
}

 

class Solution {
    fun solution(nStr: String) = nStr.toInt().toString()
}

 

class Solution {
    fun solution(n_str: String) = n_str.trimStart('0')
}

🖊 문제 풀이 시 알면 좋을 것

 

mapIndexedNotNull

  • (index, value)를 기반으로 변환 후, null이 아닌 값만 반환함.
val str = "00123"
val index = str.mapIndexedNotNull { i, v -> if (v != '0') i else null }.first()
println(index) // 2

 

 

slice

  • 특정 인덱스 범위의 문자열을 잘라서 반환함.
  • slice(start..end) 사용 시 end 인덱스까지 포함하여 문자를 추출함.
val str = "00123"
println(str.slice(2..str.length - 1)) // "123"

 

 

 

length

  • length는 문자열의 길이(문자 개수)를 반환하는 속성임.
val str = "Hello"
println(str.length) // 5

 

*하지만 위 문제풀이에서는 str.length - 1을 사용했는데 이것보다는 str.lastIndex를 쓰는 게 가독성 면에서 좋을 것 같다.

 

 

 

lastIndex

  • 문자열의 마지막 인덱스를 구하는 방법
val str = "Kotlin"
println(str.lastIndex) // 5

 

 

dropWhile

  • 조건이 참인 동안 문자를 제거하고, 첫 번째로 조건을 만족하지 않는 문자부터 반환함.
val str = "00123"
println(str.dropWhile { it == '0' }) // "123"

 

 

 

toInt().toString()

  • 숫자로 변환 후 다시 문자열로 변환하여, 숫자 앞의 불필요한 0을 자동 제거함
val str = "00123"
println(str.toInt().toString()) // "123"

 

 

 

trimStart

  • 문자열 앞쪽에서 특정 문자를 제거함.
val str = "00123"
println(str.trimStart('0')) // "123"
반응형