-
반응형
🔒 문제 설명
문자열 myString과 pat이 주어집니다. 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 합니다.
🔐 solution of mine
Array.prototype.slice()
Array.prototype.join()
function solution(myString, pat) { let answer = 0; let chk = [...myString]; for (let i = 0; i < myString.length - pat.length + 1; i++) { const chkString = chk.slice(i, i + pat.length).join(""); if (chkString === pat) answer++; } return console.log(answer); } solution("banana", "ana"); //output: 2 solution("aaaa", "aa"); //output: 3
🔐 solution of mineString.prototype.slice()
function solution(myString, pat) { let answer = 0; for (let i = 0; i < myString.length - pat.length + 1; i++) { const chk = myString.slice(i, i + pat.length); if (chk === pat) answer++; } return console.log(answer); } solution("banana", "ana"); //output: 2 solution("aaaa", "aa"); //output: 3
🔐 solution of others
정규표현식RegExp
function solution(myString, pat) { const reg = new RegExp(`(?=${pat})`, "g"); return console.log(myString.match(reg).length || 0); } solution("banana", "ana"); //output: 2 solution("aaaa", "aa"); //output: 3
◆ 해설집 - 정규표현식 문법
기호 / flag 의미 ? 없거나 or 최대 한개만
/apple?/g 문자열 내의 모든 패턴을 검색한다. (?=) 앞쪽 일치(Lookahead)
/ab(?=c)/const reg = new RegExp(/ana?/); console.log("bananananana".match(reg)); // output: ['ana'] const reg1 = new RegExp(/ana?/g); console.log("bananananana".match(reg1)); // output: ['ana', 'ana', 'ana'] const reg2 = new RegExp(/(?=ana)/g); console.log("bananananana".match(reg2)); // output: ['', '', '', '', '']
🔐 solution of others
Array() 생성자
Array.prototype.fill()
Array.prototype.map()
String.prototype.slice()
Array.prototype.filter()
const solution = (s, p) => { console.log( Array(s.length - p.length + 1) .fill("") .map((v, i) => s.slice(i, i + p.length)) .filter((v) => v === p).length ); }; solution("banana", "ana"); //output: 2 solution("aaaa", "aa"); //output: 3
반응형'► JS Algorithm > Programmers' 카테고리의 다른 글
[Programmers] JavaScript 알고리즘 | Lv.0 배열의 길이를 2의 거듭제곱으로 만들기 (0) 2024.08.06 [Programmers] JavaScript 알고리즘 | Lv.0 2차원으로 만들기 (0) 2024.08.06 [Programmers] JavaScript 알고리즘 | Lv.0 배열 만들기 5 (0) 2024.07.27 [Programmers] JavaScript 알고리즘 | Lv.0 문자열 뒤집기 (0) 2024.07.27 [Programmers] JavaScript 알고리즘 | Lv.0 글자 지우기 (0) 2024.07.21