본문 바로가기
코딩테스트

[프로그래머스] 숫자 찾기

by liz_devel 2025. 12. 21.

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(num: Int, k: Int): Int {
        return num.toString().indexOf(k.toString()).let{ if(it >= 0) it + 1 else -1 }
    }
}

📝 다른 사람의 문제 풀이

다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.

class Solution {
    fun solution(num: Int, k: Int) = "-$num".indexOf(k.toString())
}

🖊 문제 풀이 시 알면 좋을 것

indexOf()

  • 용도: 문자열에서 특정 문자 또는 문자열이 처음 등장하는 위치(0-based) 반환
  • 특징: 없으면 -1 반환
val str = "29183"
println(str.indexOf("1")) // 2
println(str.indexOf("5")) // -1

이 문제에서는 k 숫자가 몇 번째 자리인지 확인할 때 사용

 

.let { ... }

  • 용도: 임시 변수(it)를 사용해 값 가공 후 결과 반환
  • 특징: 변수 선언 없이 연속 처리 가능
val idx = "29183".indexOf("1")
val result = idx.let { if (it >= 0) it + 1 else -1 }
println(result) // 3

 

  • 여기서 it = indexOf 결과
  • 0-based → 1-based index로 바꾸거나, 없는 경우 -1 처리 가능

1-based index 처리 방법

  • 문자열 인덱스는 기본적으로 0부터 시작
  • 문제 요구가 1부터 시작이면 변환 필요
val idx = "29183".indexOf("1") // 2
val oneBased = idx + 1          // 3

 

다른 트릭: 문자열 앞에 - 붙이면 indexOf 결과가 자동으로 1-based

val idx = "-29183".indexOf("1") // 3
반응형