극동대학교\AI컴퓨터공학과\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를 증가하는 것이다.