문제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` 배열을 반환합니다.