▶slice() 함수를 활용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
문자열 myString과 pat이 주어집니다. myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ myString ≤ 1000
- 1 ≤ pat ≤ 10
입출력 예 & 설명
입출력 예 #1
- "banana"에서 1 ~ 3번 인덱스에서 한 번, 3 ~ 5번 인덱스에서 또 한 번 "ana"가 등장해서 총 두 번 등장합니다. 따라서 2를 return 합니다.
입출력 예 #2
- "aaaa"에서 0 ~ 2번 인덱스에서 한 번, 1 ~ 3번 인덱스에서 한 번, 2 ~ 4번 인덱스에서 한 번 "aa"가 등장해서 총 세 번 등장합니다. 따라서 3을 return 합니다.
나의 풀이
먼저 위 문제에서 사용했던 slice() 함수를 활용하면 쉽게 풀 수 있습니다.
문제에서 문자열 myString과 pat이 주어지는데 0부터 문자열 myString의 길이만큼 반복하는 기본 for문을 사용해 줍니다.
그리고 subs라는 변수를 만드는 데 이 변수는 찾을 문자열인 pat의 길이만큼 찾을 대상의 문자열인 myString에서 slice() 함수를 사용하여 잘라주고 담아줍니다.
그렇다면 myString에서 왼쪽의 그림과 같이 pat의 길이만큼 subs변수에 담긴 것을 볼 수 있습니다.
그리고 만약 찾을 문자열 pat이 잘라준 문자열 subs와 같다면 증감 연산자를 사용하여 카운트를 증가해 주고 해당 카운트를 반환하여 마무리했습니다.
다른 풀이
다른 풀이에서는 앞선 lastIndexOf() 포스팅에서 알아보았던 lastIndexOf() 함수를 사용했습니다.
먼저 lastIndexOf() 함수를 사용하여 str에서 pat이 마지막으로 등장하는 인덱스를 idx변수에 저장해 줍니다.
그 후 slice() 함수를 사용하여 0번 째부터 pat 문자열로 끝나는 즉 pat문자가 마지막으로 포함되고 이후 문자열을 잘라야 하기 때문에 slice()의 두 번째 인자를 마지막으로 pat이 등장하는 인덱스에서 pat의 길이만큼 더해주었습니다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 세 개의 구분자 (JavaScript) (1) | 2024.02.09 |
---|---|
[프로그래머스] 배열의 길이를 2의 거듭제곱으로 만들기 (JavaScript) (0) | 2024.02.08 |
[프로그래머스] 수열과 구간 쿼리3 (JavaScript) (0) | 2024.02.06 |
[프로그래머스] 빈 배열에 추가, 삭제하기 (JavaScript) (1) | 2024.02.03 |
[프로그래머스] 글자 지우기 (JavaScript) (0) | 2024.01.31 |