1. 자릿수 더하기
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
function solution(n) {
let answer = 0;
while(n > 0) {
answer += n%10;
n = Math.floor(n/10);
}
return answer;
}
- let answer = 0;: 초기에 answer 변수를 0으로 초기화합니다. 이 변수는 최종적으로 각 자리수의 합을 저장할 용도로 사용됩니다.
- while(n > 0) {: n이 0보다 큰 동안에 반복문을 실행합니다. n은 자리수를 하나씩 줄여가며 각 자리의 값을 추출하는 데 사용됩니다.
- answer += n%10;: n의 가장 오른쪽 자리수 값을 추출하여 answer에 더합니다.
- n%10은 n을 10으로 나눈 나머지이므로 가장 오른쪽 자리수 값을 얻을 수 있습니다. 이 값을 answer에 더함으로써 각 자리수의 합을 계속 누적합니다.
- n = Math.floor(n/10);: n을 10으로 나누고 소수점 이하를 버림하여 다음 자리수를 추출합니다.
- 이렇게 하면 n의 가장 오른쪽 자리수가 없어지고 그 왼쪽 자리수가 가장 오른쪽 자리수가 되는 것입니다.
- return answer;: 반복문이 종료되면 answer 변수에는 주어진 숫자 n의 각 자리수의 합이 저장되어 있습니다.
- 이 값을 반환하여 결과를 출력합니다.
2. OX퀴즈
덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다.
수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.
function solution(quiz) {
for (let i = 0; i < quiz.length; i++) {
let text = quiz[i].split(" ");
let result =
parseInt(text[0]) +
parseInt(text[2]) * (text[1] === "+" ? 1 : -1);
quiz[i] = result === parseInt(text[4]) ? "O" : "X";
}
return quiz;
}
- function solution(quiz) {: solution이라는 이름의 함수를 정의하고, quiz라는 매개변수를 받습니다. quiz는 문자열 배열입니다.
- for (let i = 0; i < quiz.length; i++) {: for 반복문을 사용하여 quiz 배열의 각 요소에 접근합니다.
- 반복 변수 i를 0부터 quiz.length까지 증가시키며 반복합니다.
- let text = quiz[i].split(" ");: quiz 배열의 각 요소인 문자열을 공백을 기준으로 분리하여 배열 text에 저장합니다.
- text 배열은 연산식과 정답으로 구성됩니다.
- let result = parseInt(text[0]) + parseInt(text[2]) * (text[1] === "+" ? 1 : -1);: text 배열의 첫 번째 요소와 세 번째 요소를 정수로 변환한 후 연산을 수행합니다.
- 연산자(text[1])가 "+"이면 두 수를 더하고, "+"가 아니면 두 번째 수에 -1을 곱한 후 더합니다. 계산 결과를 result 변수에 저장합니다.
- quiz[i] = result === parseInt(text[4]) ? "O" : "X";: result와 text 배열의 다섯 번째 요소를 정수로 변환한 값이 같은지 비교합니다. - 같으면 quiz 배열의 현재 요소를 "O"로 변경하고, 다르면 "X"로 변경합니다.
3. OX퀴즈
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다.
정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
function solution(n) {
let arr = [];
for(let i = 1; i <= n; i++) if(n % i === 0) arr.push(n / i);
return arr.length % 2 ? 1 : 2;
}
- let arr = [];: 빈 배열 arr을 선언합니다. 이 배열은 n의 약수를 저장할 용도로 사용됩니다.
- for(let i = 1; i <= n; i++): 1부터 n까지 반복문을 실행합니다. 반복 변수 i는 n의 약수를 검사하기 위해 사용됩니다.
- if(n % i === 0) arr.push(n / i);: 만약 n이 i로 나누어 떨어지면 (n이 i의 약수라면), arr 배열에 n을 i로 나눈 값을 추가합니다.
- 이렇게 하면 arr 배열에는 n의 약수들이 저장됩니다.
- return arr.length % 2 ? 1 : 2;: arr 배열의 길이가 홀수인지 짝수인지 확인합니다.
- 만약 arr 배열의 길이가 홀수라면 1을 반환하고, 짝수라면 2를 반환합니다.
- 이는 약수의 개수가 홀수인지 짝수인지에 따라 결과를 결정합니다.