Bomb Kirby Running

코딩 테스트 챌린지

코딩 테스트 17

^. ̫ .^ 2023. 6. 1. 23:18

728x90

문제1 숫자 찾기

정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 0 < num < 1,000,000
  • 0 ≤ k < 10
  • num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.

입출력 예

num k
result
29183 1 3
232443
4 4
123456 7 -1
function solution(num, k) {
    const numStr = String(num);  

    for (let i = 0; i < numStr.length; i++) {
        if (Number(numStr[i]) === k) {
            return i + 1;  
        }
    }

    return -1;
}

 

`num`을 문자열로 변환하여 `numStr`에 저장합니다. 이를 통해 `num`의 각 자리 숫자에 접근할 수 있습니다.
`for` 반복문을 사용하여 `numStr`을 순회합니다.
`numStr[i]`를 숫자로 변환하여 `Number(numStr[i])`와 `k`를 비교합니다. 만약 같은 숫자를 찾았다면, 해당 숫자가 처음으로 등장하는 자리 수인 `i + 1`을 반환합니다. (`i + 1`이 아닌 `i`를 반환해도 되지만, 문제에서는 1부터 시작하는 자리 수를 요구하고 있습니다.)
모든 반복을 완료한 후에도 `k`가 `num`에 없다면 -1을 반환합니다.

 

문제2 n의 배수 고르기

정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ n ≤ 10,000
  • 1 ≤ numlist의 크기 ≤ 100
  • 1 ≤ numlist의 원소 ≤ 100,000

입출력 예

n numlist
result
3 [4, 5, 6, 7, 8, 9, 10, 11, 12] [6, 9, 12]
5 [1, 9, 3, 10, 13, 5] [10, 5]
12 [2, 100, 120, 600, 12, 12] [120, 600, 12, 12]
function solution(n, numlist) {
    var answer = [];
    for (var i = 0; i < numlist.length; i++) {
        if (numlist[i] % n === 0) { 
            answer.push(numlist[i]);
        }
    }
    return answer;
}

 

 빈 배열 `answer`를 초기화합니다.
`numlist` 배열을 순회하면서 각 원소 `num`을 확인합니다.
`num`이 `n`의 배수인 경우에만 `answer` 배열에 추가합니다.
순회가 끝나면 최종적으로 `answer` 배열을 반환합니다.

문제3 n의 자릿수 더하기

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요

 

제한사항

  • 0 ≤ n ≤ 1,000,000

입출력 예

n result
1234 10
930211 16
function solution(n) {
    let answer = 0;
    let digits = n.toString().split('');
    for (var i = 0; i < digits.length; i++) {
        answer += parseInt(digits[i]);
    }
    return answer;
}


먼저, 함수 내부에서 사용되는 변수 `answer`를 0으로 초기화합니다. 이 변수는 각 자리 숫자의 합을 누적하여 저장할 변수입니다.
다음으로, `digits`라는 변수에 정수 n을 문자열로 변환한 뒤, 각 자리 숫자로 분리한 배열을 할당합니다. 이를 위해 `toString()` 메소드를 사용하여 정수를 문자열로 변환하고, `split('')` 메소드를 사용하여 각 자리 숫자로 분리합니다.
그 후, 반복문을 사용하여 각 자리 숫자에 접근합니다. 반복문에서는 `digits` 배열의 길이만큼 반복하며, 각 숫자를 `parseInt()` 함수를 사용하여 문자열에서 숫자로 변환한 뒤, `answer` 변수에 더해줍니다.
마지막으로, 계산된 `answer` 값을 반환합니다.

문제4 OX퀴즈

덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
  • 1 ≤ quiz의 길이 ≤ 10
  • X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
  • X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
  • -10,000 ≤ X, Y ≤ 10,000
  • -20,000 ≤ Z ≤ 20,000
  • [연산자]는 + 와 - 중 하나입니다.

입출력 예

quiz result
["3 - 4 = -3", "5 + 6 = 11"] ["X", "O"]
["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"] ["O", "O", "X", "O"]
function solution(quiz) {
    var answer = [];
    
    for (var i = 0; i < quiz.length; i++) {
        var equation = quiz[i].split(" "); // 수식을 공백을 기준으로 분리
        var x = parseInt(equation[0]);
        var y = parseInt(equation[2]);
        var z = parseInt(equation[4]);
        var operator = equation[1];
        
        var result;
        
        if (operator === "+") {
            result = x + y;
        } else if (operator === "-") {
            result = x - y;
        }
        
        if (result === z) {
            answer.push("O");
        } else {
            answer.push("X");
        }
    }
    
    return answer;
}


먼저, 함수 내부에서 사용되는 변수 `answer`를 빈 배열로 초기화합니다. 이 배열은 각 수식의 판별 결과를 저장할 배열입니다.
그 후, 반복문을 사용하여 주어진 수식들을 순회합니다. 반복문에서는 각 수식을 공백을 기준으로 분리하여 `equation`이라는 배열에 할당합니다.
분리된 배열에서 숫자와 연산자를 추출하여 변수에 저장합니다. `x`는 `equation[0]`, `y`는 `equation[2]`, `z`는 `equation[4]`, `operator`는 `equation[1]`에 해당합니다.
다음으로, 연산자에 따라 계산을 수행하여 `result` 변수에 저장합니다. `operator`가 "+"일 경우에는 `x + y`로 계산하고, "-"일 경우에는 `x - y`로 계산합니다.
계산된 `result`와 `z`를 비교하여 결과를 판별합니다. `result`와 `z`가 같으면 옳은 수식으로 판별하여 "O"를 `answer` 배열에 추가하고, 다르면 틀린 수식으로 판별하여 "X"를 `answer` 배열에 추가합니다.
마지막으로, `answer` 배열을 반환합니다.