본문 바로가기
코딩테스트

[프로그래머스] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

by liz_devel 2025. 1. 21.

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(myString: String, pat: String): String {
        val index = myString.lastIndexOf(pat)
        return myString.substring(0, index + pat.length)
    }
}

 


📝 다른 사람의 문제 풀이

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

class Solution {
    fun solution(myString: String, pat: String) = myString.substring(0, myString.lastIndexOf(pat) + pat.length)
}

🖊 문제 풀이 시 알면 좋을 것

lastIndexOf

  • 문자열에서 특정 패턴(pat)이 마지막으로 등장하는 시작 위치를 반환.
  • 패턴이 없을 경우 -1을 반환.
val myString = "hello world"
val pat = "o"

println(myString.lastIndexOf(pat)) // 출력: 7 (마지막 "o"의 위치)
println(myString.lastIndexOf("z")) // 출력: -1 (존재하지 않음)

 

substring

  • 문자열의 특정 범위를 잘라내는 함수.
  • substring(startIndex, endIndex)는 startIndex부터 endIndex - 1까지 반환.
    • startIndex: 포함 (이 위치의 문자부터 시작).
    • endIndex: 포함되지 않음 (이 위치의 문자는 제외).
    • 즉, startIndex부터 endIndex - 1까지의 부분 문자열을 반환함.
val myString = "hello world"

// startIndex 포함, endIndex 미포함
println(myString.substring(0, 5)) // 출력: "hello" (0~4 문자 포함)
println(myString.substring(6, 11)) // 출력: "world" (6~10 문자 포함)

// startIndex만 사용할 경우, 끝까지 반환
println(myString.substring(6)) // 출력: "world"
반응형