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

KIMYEONGJUN·2026년 7월 7일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

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

내가 이 문제를 보고 생각해본 부분

solution 메서드는 myString과 pat 두 개의 문자열을 매개변수로 받는다.
첫 번째로 answer라는 정수 변수로 등장 횟수를 저장할 용도를 준비한다.
초기값은 0이다.
patLen에 pat 문자열의 길이를 담는다.
이는 몇 자리 길이의 문자열을 부분 추출할지를 알기 위한 것이다.
검사할 범위 limit을 결정하는데, 이는 myString 전체 길이에서 pat 길이를 뺀 후 1을 더한 값이다.
이유는 인덱스 i부터 i + patLen까지 자를 때, 범위 초과를 막기 위해서이다.
for 문으로 i를 0부터 limit - 1까지 반복한다.
매 번 myString.substring(i, i + patLen)으로 myString에서 i번 인덱스부터 patLen 길이만큼 부분 문자열을 추출한다.
이 부분 문자열과 pat가 equals 메서드로 같은지 비교한다.
같으면 answer를 1 증가시킨다.
반복이 끝나면 answer에 저장된 pat 등장 횟수를 반환한다.

코드로 구현

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        int patLen = pat.length();
        int limit = myString.length() - patLen + 1;

        for (int i = 0; i < limit; i++) {
            String sub = myString.substring(i, i + patLen);
            if (sub.equals(pat)) {
                answer++;
            }
        }

        return answer;
    }
}

프로그래머스 코드

package programmers;

// 프로그래머스 문자열이 몇 번 등장하는지 세기
public class Main74 {
    public static int solution(String myString, String pat) {
        int answer = 0;
        int patLen = pat.length();
        int limit = myString.length() - patLen + 1;

        for (int i = 0; i < limit; i++) {
            String sub = myString.substring(i, i + patLen);
            if (sub.equals(pat)) {
                answer++;
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        // 테스트용 예시
        String myString1 = "banana";
        String pat1 = "ana";
        System.out.println(solution(myString1, pat1)); // 예상 출력: 2

        String myString2 = "aaaa";
        String pat2 = "aa";
        System.out.println(solution(myString2, pat2)); // 예상 출력: 3
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글