본문 바로가기

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

codeConnection 2024. 5. 24.

[level 0] 문자열이 몇 번 등장하는지 세기 - 181871

문제 링크

성능 요약

메모리: 33.5 MB, 시간: 0.04 ms

구분

코딩테스트 연습 > 코딩 기초 트레이닝

채점결과

정확성: 100.0
합계: 100.0 / 100.0

제출 일자

2024년 05월 21일 18:24:39

문제 설명

문자열 myStringpat이 주어집니다. 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 합니다.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

나의 답

function solution(myString, pat) {
    let includePatCount = 0; // pat이 myString에 몇 번 포함되는지
    // 횟수를 할당하는 변수
    let firstLocationPat = myString.indexOf(pat);
    // myString에서 pat이 처음 등장하는 index의 값을 할당하는 변수

    // indexOf는 문자열에 해당 문자가 포함되어 있지 않으면 -1을 반환하기 때문에
    // while의 조건식은 더이상 pat이 myString에 없을 때까지 반복을 돌라는 의미
    while (firstLocationPat !== -1) {
        // 즉 발견이 되면 includePatCount를 최초 0번에서 1씩 카운트를 늘려나가고
        includePatCount++;
        // pat이 발견이 되면 다음 index로 이동시켜서 계속 검증함.
        firstLocationPat = myString.indexOf(pat, firstLocationPat + 1)
    }
    return includePatCount;
}

댓글