관리 메뉴

나만을 위한 블로그

[Algorithm] 프로그래머스 - 문자열이 몇 번 등장하는지 세기 (Kotlin) 본문

알고리즘 문제 풀이/프로그래머스

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

참깨빵위에참깨빵_ 2024. 5. 31. 15:58
728x90
반응형
문자열 myString, pat이 주어진다. myString에서 pat이 등장하는 횟수를 리턴하는 함수를 완성하라

 

 

풀지 못해서 다른 사람들의 풀이를 참고했다.

 

class Solution {
    fun solution(myString: String, pat: String): Int {
        var count = 0
        var index = 0

        while (index != -1) {
            index = myString.indexOf(pat, index)
            if (index != -1) {
                count++
                index += 1
            }
        }

        return count
    }
}

 

indexOf()로 pat이 어느 인덱스에서 발견됐는지 찾고, 그 인덱스 이후의 문자열을 대상으로 해서 indexOf를 재호출한다.

발견될 때마다 index 변수에 1을 더하고, 더 이상 pat이 보이지 않으면 그 때 count를 리턴한다.

 

banana, ana 문자열의 경우 ana는 1번 인덱스에서 나타난다. 이후 count에 1을 더해서 count는 1이 된다.

이 때 아직 while이 종료되지 않아서 다시 indexOf가 호출된다. 그리고 3번 인덱스에서 다시 ana를 발견한다. 마찬가지로 count에 1을 더하고, count는 2가 된다.

이후 ana는 더 이상 등장하지 않기 때문에 indexOf는 ana를 찾지 못해 -1을 리턴하고 while을 탈출하게 된다. 이후 2를 리턴하면서 함수가 종료된다.

반응형
Comments