120887. k의 개수 - split() 여집합

서진·2023년 5월 5일

programmers

목록 보기
13/33

🔻 k의 개수

1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.

입출력 예

ijkresult
113 1 6
1050 5 5
310 2 0

👀
split() 여집합을 이용한 풀이를 계속 보기만하고 활용을 못해서 기록..
그리고 문자열로 변환하는 방식도!!!


[👩🏻‍💻내 코드]

function solution(i, j, k) {
    let answer = 0;
    for (i; i <= j; i++) {
        answer += i.toString().split('').filter(v => v === k.toString()).length;
    }
    return answer;
}

[👀 참고용]

function solution(i, j, k) {
    let a ='';
    for(i;i<=j;i++){
        a += i;
    }

    return a.split(k).length-1;
}

✅ 빈 문자열에 숫자를 더해서 문자열로 만들기

매번 문자열을 만들 때 .toString() 메소드를 사용하였는데, 문자열에 더하는 방식도 사용해보자.

let answer = '';
console.log(typeof(answer + 3)) // string

✅ string.prototype.split() 여집합

string.split(seperator, limit) 함수는 문자열을 seperator라는 구분자를 기준으로 잘라서 최대 분할 개수 크기인 limit크기 이하의 배열에 저장한다. 매번 string.split('')을 통해 문자열을 배열로 변환할 때만 사용하였는데, seperator를 좀 더 활용하여 문자열에서 원하는 값의 개수를 찾을 때도 사용할 수 있다

// target 문자열에서 '9'의 개수를 찾고 싶을 때
let target = '393';
console.log(target.split(9)) // ['3', '3']

/* 찾으려는 값 (seperator)를 기준으로 자르기 때문에 
항상 찾으려는 값보다 하나 더 큰 값을 split 결과값의 길이로 가진다.
때문에 -1을 해주어야 한다.
*/
console.log(target.split(9).length -1) // 1
                    
profile
🫧 ☁️ 🌙 👩🏻•💻 🌿 🐱 🖱 🍟 🚀 ⭐️ 🧸 🍀 💗

0개의 댓글