코딩테스트

[코딩테스트] k의 개수

홍시_코딩기록 2024. 4. 4. 23:24

 

문제


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

 

내 코드

function solution(i, j, k) {
    let count = 0;
    for (let num = i; num <= j; num++) {
        const numString = num.toString();
        for(let digit of numString.toString()) {
            if (digit === k.toString()) {
                count++
            }
        }
    }
    return count;
}

- 원래 Array.from()을 이용해서 i부터 j까지의 배열을 먼저 만들었었다. 하지만 문자열로 바꾸고 k를 찾는 중에 11과 같은 같은 수의 숫자를 만나면 1이 포함되었다는 것만 확인하고 1을 반환하여 방법을 바꿔보았다.

- 생각해보니 굳이 배열을 만들 필요는 없었다. 반복문으로 i부터 j까지 반복하고 문자열로 바꿔 k가 있는지 확인하였다.

 

 

다른 사람 코드


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

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

- split을 항상 ("") 사용해서 쪼개기만 했지 k로 나눌 생각은 못했다.

- length -1 ;이 헷갈렸는데

const string = 'hello, world, javascript';
console.log(string.split(','));
//['hello', 'world', 'javascript']

- 이거 보고 이해하면 될 것 같다.  k로 나눌시에 k보다 하나가 더 생기므로 -1