728x90
코드 힌트
이 문제에서는 문자열 myString에서 주어진 패턴 pat이 몇 번 나타나는지를 세어야 합니다.
이를 위해 아래의 메소드와 개념을 사용하게 됩니다:
- 반복문을 사용하여 패턴 검색:
- 아이디어: 문자열 myString의 시작부터 끝까지 패턴 pat을 찾으려면, 문자열의 각 위치에서 pat의 길이만큼 잘라내어 그 부분이 pat과 일치하는지 확인해야 합니다.
- 어떻게 하는지: 예를 들어, 문자열이 "hellohello"이고 패턴이 "lo"라면, "he", "el", "ll", "lo" 이렇게 차례로 부분 문자열을 만들어서 "lo"와 비교합니다.
- 문자열을 자르는 메소드 substring():
- 역할: 이 메소드는 문자열에서 특정 위치부터 일정 길이의 부분을 잘라내는 역할을 합니다.
- 예시: "hello".substring(1, 3)은 "el"을 반환합니다. 이 메소드를 사용해 myString에서 패턴 길이만큼의 부분을 잘라냅니다.
- 문자열 길이를 확인하는 메소드 length():
- 역할: 이 메소드는 문자열이 얼마나 긴지를 알려줍니다. 예를 들어, "hello".length()는 5를 반환합니다.
- 사용 이유: myString에서 어디까지 잘라낼지 결정하려면 이 메소드가 필요합니다.
- 일치하는 패턴을 찾는 방법:
- 아이디어: 잘라낸 부분 문자열이 패턴 pat과 일치하는지 확인합니다. 이때, 자를 위치와 길이는 패턴 pat의 길이와 동일해야 합니다.
- 방법: 잘라낸 부분과 pat을 비교할 때, equals() 메소드를 사용합니다. 이 메소드는 두 문자열이 정확히 같으면 true를, 다르면 false를 반환합니다.
- 결과 반환:
- 최종 목표: 우리가 관심 있는 것은 패턴 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
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 세 개의 구분자 (0) | 2024.08.13 |
---|---|
[프로그래머스] 배열의 길이를 2의 거듭제곱으로 만들기 (0) | 2024.08.13 |
[프로그래머스] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (0) | 2024.08.13 |
[프로그래머스] 1로 만들기 (0) | 2024.08.12 |
[프로그래머스] 조건에 맞게 수열 변환하기 2 (0) | 2024.08.12 |