JAVA/프로그래머스 코딩 기초 트레이닝

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

sundori 2024. 1. 6. 21:43

#1 문자열이 몇 번 등장하는지 세기

문제설명

문자열 myString과 pat이 주어집니다. myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 1 ≤ myString ≤ 1000
  • 1 ≤ pat ≤ 10

입출력 예

myString pat result
"banana" "ana" 2
"aaaa" "aa" 3

입출력 예 설명

입출력 예 #1

  • "banana"에서 1 ~ 3번 인덱스에서 한 번, 3 ~ 5번 인덱스에서 또 한 번 "ana"가 등장해서 총 두 번 등장합니다. 따라서 2를 return 합니다.

입출력 예 #2

  • "aaaa"에서 0 ~ 2번 인덱스에서 한 번, 1 ~ 3번 인덱스에서 한 번, 2 ~ 4번 인덱스에서 한 번 "aa"가 등장해서 총 세 번 등장합니다. 따라서 3을 return 합니다.

#2 알고리즘 및 코드

public class Main {
    public static void main(String[] args) {
        String myString = "banana";
        String pat = "ana";
        Solution sl = new Solution();

        System.out.println(sl.solution(myString, pat));
    }
}
class Solution {
    public int solution(String myString, String pat) {
        int count = 0;
        for(int i = 0; i < myString.length() - pat.length() + 1; i++){
            if(myString.substring(i, i + pat.length()).contains(pat)){
                count++;
            }
        }
        return count;
    }
}
  • for문을 사용해 밑에 코드처럼 순회한다.
i < myString.length() - pat.length() + 1;
  • "banana"와 "ana"를 예로 들면 i < 4 총 4번 순회하게 되는 것이다.
    --------
    banana
    ana
    --------
    banana
      ana

    --------
    banana
        ana
    --------
    banana
           ana
    ----------
    이런식으로 비교 myString에서 3개씩 추출하여 그 추출된 문자열이 pat을 포함하는지 검사하여 포함한다면
    count를 증가하는 것이다.
728x90