- 문제 설명숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
- 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.
- 제한사항
3 ≤ number의 길이 ≤ 13
-1,000 ≤ number의 각 원소 ≤ 1,000
서로 다른 학생의 정수 번호가 같을 수 있습니다.

풀이
function solution(t, p) {
var answer = 0;
for(let i = 0 ; i < t.length-p.length+1 ; i++){
let num = t.slice(i, i+p.length)
console.log(num)
answer += num <= p ? 1 : 0
}
return answer;
}
숫자로 이루어진 문자열 t, p 를 반복해서 비교해야 하기때문에 for문을 썼다.
i < t.length-p.length+1을 한 이유는 for문 안의 t.slice(i,i+p.length) 를 쓰기 위해서인데,
str.slice()는 첫번째 매게변수는 시작인덱스, 두번째 매게변수는 끝 인덱스를 추출하기때문에
예시 1을보면 t="3141592"이고 길이가 3인 부분 문자열은 314, 141, 415, 159, 592 시작인덱스가 0이여야하고 마지막 시작인덱스는 5이다. 그러므로 slice를 하기위해선 i의 값이 최대 4여야하기때문에 마지막에 +1을 했었다.
제출하고 생각해보니까 +1을 할게아니라 i <= t.length-p.length 이렇게 했었어야 했다.
그리고 answer에 num이 p보다 작거나 같다면 삼항연산자를 써서 1을 더하게 아니라면 0을 더하게끔했다.
'코딩테스트' 카테고리의 다른 글
| (javascript) 시저 암호 (0) | 2024.01.25 |
|---|---|
| (javascript) 최소직사각형 (0) | 2024.01.25 |
| (javascript)삼총사 (1) | 2024.01.24 |
| (javascript) 이상한 문자 만들기 (0) | 2024.01.23 |
| (javascript)3진법 뒤집기 (1) | 2024.01.23 |