[프로그래머스/코딩테스트 모음/Javascript] k의 개수

TED·2023년 9월 25일
0

Javascript CodingTest

목록 보기
36/63
post-thumbnail

< 오늘의 문제 >

k의 개수

k의 개수

function solution(i, j, k) {
    var answer = 0; // 결과값을 저장할 변수를 초기화

    for (let num = i; num <= j; num++) {
        let numStr = num.toString(); // 현재 숫자를 문자열로 변환하여 각 자릿수를 검사하기 위해 문자열로 저장
        
        for (let digit of numStr) { // 문자열로 저장한 숫자의 각 자릿수를 순회
            if (Number(digit) === k) { // 숫자로 변환한 자릿수와 k를 비교하여 같으면 아래 코드를 실행
                answer++; // 결과값을 1 증가
            }
        }
    }

    return answer; // 최종적으로 결과값을 반환
}
  • 나의 풀이
    answer 변수는 최종적으로 반환할 결과값을 저장하는 변수. 초기값은 0.
    for 루프를 사용하여 i부터 j까지의 범위 내의 숫자를 하나씩 확인. 이 숫자를 num 변수에 저장.
    num.toString()을 사용하여 현재 숫자 num을 문자열로 변환. 이렇게 함으로써 숫자의 각 자릿수를 검사할 수 있다.
    for...of 루프를 사용하여 문자열로 변환한 numStr의 각 자릿수를 순회.
    각 자릿수(digit)를 Number(digit)를 사용하여 숫자로 변환한 후, k와 비교.
    Number(digit)은 문자열 자릿수를 숫자로 변환하는 역할.
    만약 Number(digit)과 k가 같다면 (즉, 숫자 자릿수와 k가 일치하면), answer 변수를 1 증가.
    범위 내의 모든 숫자를 순회하고 나면, 최종적으로 answer 변수에는 i부터 j까지의 범위 내에서 숫자 k가 등장한 횟수가 저장.

풀이 시간이 너무 오래걸리는 테스트 케이스도 있어서 다른사람 풀이도 찾아보았다.

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

    return a.split(k).length-1;
}
  • 다른 사람 풀이
    : 생각지도 못한 방향..과 방법
    부모에게서 받아온 변수를 그대로 써도 된다. 무조건적으로 정형화된 방법으로만 초기값을 지정해줘야한다고 생각한 틀을 깨줬다.
    문자열 a에 i부터 j까지의 모든 수를 추가하고 k로 split한 후 length - 1을 출력
profile
컴맹 개발 입문자

0개의 댓글