< 요약 >
- 매서드 복습 많이 해야할 듯 ... 문제 풀 때 생각이 전혀 안 남
- 함수, 반복문, 객체 등 내용이 다 섞여서 조금 혼란스러움
- 숫자의 각 자릿수를 더하고 싶을 때,
const str = 123;
1) [...(str+"")] : 숫자를 배열로 바꿀 때 ""없이 하면 변경이 안 됨
2) .map(Number) : 배열의 각 값을 숫자로 바꿈
3) .reduce((prev, cur) => prev + cur, 0) : 초기값 0 설정 후 index 0부터 합하기
- 용재님이 발견한 재밌는 것
: 배열의 길이를 줄이면 배열요소도 사라짐
const arr = [1, 2, 3, 4, 5];
arr.length -= 2;
console.log(arr);
Q1. 문자열을 정수로 바꾸기
문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한 조건
s의 길이는 1 이상 5이하입니다.
s의 맨앞에는 부호(+, -)가 올 수 있습니다.
s는 부호와 숫자로만 이루어져있습니다.
s는 "0"으로 시작하지 않습니다.
< 나의 문제 풀이 >
function solution(str) {
let num = Number(str);
return num;
}
const a = "1234";
const b = "-1234";
console.log(solution(a));
console.log(solution(b));
< 팀원 문제 풀이 >
function solution(s) {
let answer = Number(s);
return answer;
}
console.log(solution('1234'));
console.log(solution('-1234'));
- 간단한 문제여서 팀원들과 내 문제 풀이가 거의 흡사했음
Q2. 약수의 합
문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한 사항
n은 0 이상 3000이하인 정수입니다.
< 나의 문제 풀이 >
function solution(n) {
let result = 0;
if (n <= 0) return 0;
for (let i = 1; i <= n; i++) {
if (n % i === 0) result += i;
}
return result;
}
console.log(solution(12));
console.log(solution(5));
- 내가 발표한 문제였음, 이 문제도 간단한 문제라서 다들 비슷하게 풀이한 듯
Q3. 자릿수 더하기
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
N의 범위 : 100,000,000 이하의 자연수
< 나의 문제 풀이 >
function solution(n) {
const str = String(n);
let result = 0;
for (let i = 0; i <= str.length; i++) {
result += Math.floor(n / 10 ** i) % 10;
}
return result;
}
const a = 123;
const b = 987;
console.log(solution(a));
console.log(solution(b));
< 팀원 문제 풀이 - 1 >
function solution(n) {
let answer = 0;
let arr = String(n).split('');
for (let i of arr) {
answer += Number(i);
}
return answer;
}
console.log(solution(123));
console.log(solution(987));
< 팀원 문제 풀이 - 2 >
function solution(n)
{
return [...n+""].map(Number).reduce((a, b) => a + b, 0)
}
console.log(solution(123));
console.log(solution(987));
- 팀원들은
String, split 등 매서드 활용을 잘 하는 것 같다.
난 오늘 배운 내용을 녹여서 급하게 했지만, 앞에 배운 내용들은 생각이 안 났다.
...전개연산자, map, reduce 사용법 거의 모른다고 생각하면 될 듯...
Q4. 짝수와 홀수
문제 설명
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
제한 조건
num은 int 범위의 정수입니다.
0은 짝수입니다.
< 나의 문제 풀이 >
function solution(num) {
if (num % 2 === 0) return "Even";
return "Odd";
}
console.log(solution(3));
console.log(solution(4));
< 팀원 문제 풀이 >
function solution(num) {
return num % 2 === 0 ? 'Even' : 'Odd';
}
console.log(solution(3));
console.log(solution(4));
- if문을 사용한 내 풀이와는 다르게
삼항연산자를 사용하면서 더 깔끔하게 풀이가 됨
- if문이 아닌 다른 문제 풀이법을 사용할 수 있도록 해야할 듯...
Q5. 평균 구하기
문제 설명
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
제한사항
arr은 길이 1 이상, 100 이하인 배열입니다.
arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
< 나의 문제 풀이 >
function solution(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum / arr.length;
}
const a = [1, 2, 3, 4];
const b = [5, 5];
console.log(solution(a));
console.log(solution(b));
< 팀원 문제 풀이 >
function solution(arr) {
let answer = 0;
for (let n of arr) {
answer += n;
}
return answer / arr.length;
}
console.log(solution([1, 2, 3, 4]));
console.log(solution([5, 5]));
- 다른 팀원과의 풀이법이 크게 다르지 않지만,
i를 일일이 다 정해주는 것 보다 for...of문으로 좀 더 간략하게 표현해야 할 듯