본문 바로가기

프로그래머스(Java)/Level 0

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

728x90

코드 힌트

이 문제에서는 문자열 myString에서 주어진 패턴 pat이 몇 번 나타나는지를 세어야 합니다.

이를 위해 아래의 메소드와 개념을 사용하게 됩니다:

  1. 반복문을 사용하여 패턴 검색:
    • 아이디어: 문자열 myString의 시작부터 끝까지 패턴 pat을 찾으려면, 문자열의 각 위치에서 pat의 길이만큼 잘라내어 그 부분이 pat과 일치하는지 확인해야 합니다.
    • 어떻게 하는지: 예를 들어, 문자열이 "hellohello"이고 패턴이 "lo"라면, "he", "el", "ll", "lo" 이렇게 차례로 부분 문자열을 만들어서 "lo"와 비교합니다.
  2. 문자열을 자르는 메소드 substring():
    • 역할: 이 메소드는 문자열에서 특정 위치부터 일정 길이의 부분을 잘라내는 역할을 합니다.
    • 예시: "hello".substring(1, 3)은 "el"을 반환합니다. 이 메소드를 사용해 myString에서 패턴 길이만큼의 부분을 잘라냅니다.
  3. 문자열 길이를 확인하는 메소드 length():
    • 역할: 이 메소드는 문자열이 얼마나 긴지를 알려줍니다. 예를 들어, "hello".length()는 5를 반환합니다.
    • 사용 이유: myString에서 어디까지 잘라낼지 결정하려면 이 메소드가 필요합니다.
  4. 일치하는 패턴을 찾는 방법:
    • 아이디어: 잘라낸 부분 문자열이 패턴 pat과 일치하는지 확인합니다. 이때, 자를 위치와 길이는 패턴 pat의 길이와 동일해야 합니다.
    • 방법: 잘라낸 부분과 pat을 비교할 때, equals() 메소드를 사용합니다. 이 메소드는 두 문자열이 정확히 같으면 true를, 다르면 false를 반환합니다.
  5. 결과 반환:
    • 최종 목표: 우리가 관심 있는 것은 패턴 pat이 몇 번 나타났는지 세는 것입니다. 그래서, 일치할 때마다 result 변수를 1씩 증가시키고, 마지막에 이 변수를 반환합니다. 이 변수에는 pat이 myString에 나타난 총 횟수가 저장됩니다.

 

 


정답은 더보기 클릭

더보기
class Solution {
    public int solution(String myString, String pat) {
        int result = 0; // 패턴이 발견된 횟수를 저장하는 변수
        int n = pat.length(); // 패턴의 길이를 저장하는 변수

        // 문자열 myString의 각 위치에서 패턴 pat의 길이만큼 부분 문자열을 추출하여 비교합니다.
        for (int i = 0; i < myString.length() - n + 1; i++) {
            // i번째 위치부터 시작해서 n개의 문자를 잘라낸 부분 문자열이 패턴과 동일한지 확인합니다.
            if (myString.substring(i, n + i).equals(pat)) 
                result++; // 패턴이 발견되면 카운트를 증가시킵니다.
        }
        
        return result; // 패턴이 발견된 총 횟수를 반환합니다.
    }
}
728x90