본문 바로가기
코딩테스트

[프로그래머스] 문자열이 몇 번 등장하는지 세기

by liz_devel 2025. 1. 21.

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(myString: String, pat: String): Int {
            var count = 0
            var index = myString.indexOf(pat)
        while(index != -1) {
            count++
            index = myString.indexOf(pat, index + 1) 
           }
        return count
    }
}

 


📝 다른 사람의 문제 풀이

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

class Solution {
    fun solution(myString: String, pat: String): Int {
        return (0..myString.length - pat.length).map { myString.substring(it, it + pat.length) }.count { it == pat }
    }
}

🖊 문제 풀이 시 알면 좋을 것

indexOf

  • 문자열에서 특정 패턴이 처음 등장하는 인덱스 위치를 반환.
  • 두 번째 매개변수를 사용해 탐색 시작 위치를 지정 가능.
  • 반환값:
    • 패턴이 발견되면 시작 인덱스를 반환.
    • 패턴이 없으면 -1 반환.
val index = myString.indexOf(pat, startIndex)
val str = "banana"
println(str.indexOf("ana"))      // 출력: 1
println(str.indexOf("ana", 2))   // 출력: 3

 

substring

  • 문자열에서 특정 범위를 잘라낸 부분 문자열을 반환.
  • startIndex는 포함, endIndex는 미포함.
val subStr = myString.substring(startIndex, endIndex)
val str = "banana"
println(str.substring(1, 4)) // 출력: "ana"

 

count

  • 컬렉션에서 주어진 조건을 만족하는 요소의 개수를 반환.
  • 문자열을 리스트나 시퀀스로 변환 후 사용 가능.
val count = collection.count { condition }
val str = listOf("a", "b", "a", "c")
println(str.count { it == "a" }) // 출력: 2
반응형