[프로그래머스] k의 개수

stella·2023년 1월 8일
0

Algorithm

목록 보기
6/40
post-thumbnail

문제

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


로직 생각해보기

  • 배열을 생성해서 i 부터 j까지 값들을 모두 하나씩 나열하기
function solution(i, j, k) {
    let array = [...Array(j-i+1).fill(0).map((a, index) => (i+index) + '')]
    
    console.log(array)
    return array;
}

i 부터 j 까지 배열에 값들이 잘 들어와 있다.
이제 값들을 하나씩 k와 비교해줘야 하는데 10의 자리 이상의 숫자는 어떻게 비교할 수 있을까?

  • join('') 메서드를 사용했더니 10의 자리 이상의 숫자들이 다 하나씩 띄어진 걸 확인할 수 있었다.
function solution(i, j, k) {
    let array = [...Array(j-i+1).fill(0).map((a, index) => (i+index) + '').join('')]
    
    console.log(array)
    return array;
}

  • 이제 filter() 메서드를 이용해서 k와 일치하는지 비교를 해줘야 한다.
function solution(i, j, k) {
    let array = [...Array(j-i+1).fill(0).map((a, index) => (i + index)+'').join('')].filter(a => a === (k+''));
        
    return array;
}

k와 일치하는 값들만 k 값으로 바뀌어서 출력되었다.

  • 따라서 그 배열의 길이를 return 해주면 정답이 된다.
function solution(i, j, k) {
    let array = [...Array(j-i+1).fill(0).map((a, index) => (i + index)+'').join('')].filter(a => a === (k+'')).length;
    
    console.log(array)
    return array;
}
profile
Frontend Engineer

0개의 댓글