JAVASCRIPT/코딩테스트
프로그래머스 레벨1 - 크기가 작은 부분 문자열(filter함수 사용)(JAVASCRIPT)
진짠
2023. 1. 3. 13:46
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/147355
문제
p의 문자열 길이만큼 t를 잘라야 한다는 생각이 처음으로 들었고,
그 다음으로 자른 값들을 p와 비교하여야겠다는 생각을 하였다.
제한사항
특별히 눈여겨 볼것은 없는 듯 하다.
중복된 값은 카운트하지 않는다던가, 앞이 0인 값들의 조건들을 따로 처리해야하나 하는 생각에 걱정이 앞섰지만 결과적으로 따로 처리해준 부분은 없었다.
답
function solution(t, p) {
var answer = [];
for(var i=0;i<t.length-p.length+1;i++) {
answer.push(t.substring(i, p.length+i));
}
answer = answer.filter((x) => x <= p);
return answer.length;
}
내가 작성한 코드
for문을 먼저 돌린다.
'for(var i=0;i<t.length;i++)' 로 처음에 for문을 짜니까 문자열의 끝부분이 p의 길이만큼 잘리지 않는 오류가 발생했다.
그래서 p의 길이+1만큼을 빼서 잉여 값들을 제해주었다.
answer 배열에 값을 넣어주고 filter함수를 통해 p와 비교하여 값이 작거나 같은 값들만 뽑았다.
마지막으로 answer의 길이를 return 시켰다.
비교
굳이 배열에 담은 뒤 filter함수를 사용해 비교할 필요 없이 for문안에서 문자열을 자른뒤 비교 후 카운팅하는 방법이 있었다.
if(t.substr(i,p.length) <= p){
answer++;
}
성능개선을 위해 필요할 듯.
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
728x90