코딩테스트 17일차
숫자 찾기
정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
function solution(num, k) {
var answer = -1; // 초기값을 -1로 설정
// num을 문자열로 변환하여 한 글자씩 순회
var numString = num.toString();
for (var i = 0; i < numString.length; i++) {
if (parseInt(numString[i]) === k) { // 문자를 정수로 변환하여 k와 비교
answer = i + 1; // 숫자의 인덱스는 0부터 시작하므로 +1을 해서 자릿수를 계산
break; // k를 찾았으므로 반복문 종료
}
}
return answer;
}
✏️풀이
solution 함수의 매개변수로 num과 k를 받습니다.
answer 변수를 -1로 초기화합니다. 이 변수는 k가 존재하는 자릿수를 저장할 변수입니다. 초기값을 -1로 설정하는 이유는 k가 존재하지 않는 경우에는 -1을 반환하기 위해서입니다.
num을 toString() 메서드를 사용하여 문자열로 변환합니다. 이렇게 하면 num의 각 숫자를 문자로 분리할 수 있습니다.
for 루프를 사용하여 numString의 각 문자를 순회합니다.
parseInt(numString[i])를 사용하여 numString의 i번째 문자를 정수로 변환합니다. 이렇게 하면 k와 비교하기 위해 숫자로 비교할 수 있습니다.
if 문을 사용하여 정수로 변환한 숫자가 k와 동일한지 확인합니다.
k와 동일한 숫자를 찾았다면 answer에 현재 인덱스 i에 1을 더하여 자릿수를 계산합니다. 숫자의 인덱스는 0부터 시작하므로, 실제 자릿수를 표현하기 위해 1을 더합니다.
break 문을 사용하여 반복문을 종료합니다. 이미 k를 찾았으므로 더 이상 순회할 필요가 없습니다.
answer 값을 반환합니다. k가 존재하지 않는 경우에는 -1이 반환됩니다.
n의 배수 고르기
정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.
function solution(n, numlist) {
var answer = numlist.filter(num => num % n === 0);
return answer;
}
✏️풀이
solution 함수의 매개변수로 n과 numlist를 받습니다.
answer 변수를 빈 배열로 초기화합니다. 이 변수는 n의 배수가 아닌 수들을 저장할 배열입니다.
numlist 배열의 filter 메서드를 사용하여 각 원소를 순회합니다.
num % n === 0 조건을 사용하여 현재 원소 num이 n의 배수인지 확인합니다. 조건을 만족하는 경우에는 filter 메서드에 의해 배열에 포함됩니다.
filter 메서드에 의해 조건을 만족하는 원소들로 이루어진 배열이 answer에 저장됩니다.
answer 배열을 반환합니다.
자릿수 더하기
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
function solution(n) {
var answer = 0;
var numString = n.toString(); // 정수를 문자열로 변환
for (var i = 0; i < numString.length; i++) {
answer += parseInt(numString[i]); // 각 자리 숫자를 정수로 변환하여 합에 더함
}
return answer;
}
✏️풀이
solution 함수의 매개변수로 정수 n을 받습니다.
answer 변수를 0으로 초기화합니다. 이 변수는 각 자리 숫자의 합을 저장할 변수입니다.
numString 변수에 n을 문자열로 변환하여 저장합니다. 이를 통해 각 자리 숫자에 접근할 수 있습니다.
for 반복문을 사용하여 numString의 각 자리 숫자에 접근합니다.
parseInt(numString[i])를 통해 현재 자리 숫자를 정수로 변환하여 합에 더합니다.
반복문이 모두 실행되면 answer에는 n의 각 자리 숫자의 합이 저장됩니다.
최종적으로 answer를 반환합니다.
OX퀴즈
덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.
function solution(quiz) {
var answer = [];
for (var i = 0; i < quiz.length; i++) {
var equation = quiz[i].split(" "); // 수식을 공백을 기준으로 분리
var X = parseInt(equation[0]); // 첫 번째 숫자 X
var operator = equation[1]; // 연산자
var Y = parseInt(equation[2]); // 두 번째 숫자 Y
var Z = parseInt(equation[4]); // 결과 숫자 Z
var result = 0; // 계산 결과
if (operator === "+") {
result = X + Y;
} else if (operator === "-") {
result = X - Y;
}
// 계산 결과와 Z를 비교하여 정답 여부 판별
if (result === Z) {
answer.push("O");
} else {
answer.push("X");
}
}
return answer;
}
✏️풀이
solution 함수의 매개변수로 수식 배열 quiz를 받습니다.
answer 변수를 빈 배열로 초기화합니다. 이 변수는 옳은 수식과 틀린 수식을 담을 배열입니다.
for 반복문을 사용하여 quiz 배열을 순회합니다.
각 수식을 공백을 기준으로 분리하여 equation 배열에 저장합니다. 수식은 "X [연산자] Y = Z" 형태로 구성되어 있으므로, 이를 분리하여 각각의 값을 얻을 수 있습니다.
equation 배열의 첫 번째 요소를 정수로 변환하여 X 변수에 저장합니다.
equation 배열의 두 번째 요소를 operator 변수에 저장합니다.
equation 배열의 세 번째 요소를 정수로 변환하여 Y 변수에 저장합니다.
equation 배열의 네 번째 요소를 정수로 변환하여 Z 변수에 저장합니다.
result 변수를 0으로 초기화합니다. 이 변수는 계산 결과를 저장할 변수입니다.
operator의 값에 따라 계산을 수행합니다. +인 경우 X와 Y를 더하고, -인 경우 X에서 Y를 뺍니다. 결과는 result 변수에 저장됩니다.
result와 Z를 비교하여 정답 여부를 판별합니다. 같으면 정답이므로 "O"를 answer 배열에 추가하고, 다르면 오답이므로 "X"를 answer 배열에 추가합니다.
모든 수식에 대해 반복문이 실행되면 최종적으로 answer 배열이 완성되고, 이를 반환합니다.