16일차 RBF 코딩테스트 문제풀이

워니·2024년 11월 4일

< 요약 >

- 매서드 복습 많이 해야할 듯 ... 문제 풀 때 생각이 전혀 안 남
- 함수, 반복문, 객체 등 내용이 다 섞여서 조금 혼란스러움

- 숫자의 각 자릿수를 더하고 싶을 때,
const str = 123;
1) [...(str+"")] : 숫자를 배열로 바꿀 때 ""없이 하면 변경이 안 됨
2) .map(Number) : 배열의 각 값을 숫자로 바꿈
3) .reduce((prev, cur) => prev + cur, 0) : 초기값 0 설정 후 index 0부터 합하기
// 6

- 용재님이 발견한 재밌는 것
: 배열의 길이를 줄이면 배열요소도 사라짐
const arr = [1, 2, 3, 4, 5];
arr.length -= 2;
console.log(arr); // [1, 2, 3]

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);
  //   console.log(str);
  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문으로 좀 더 간략하게 표현해야 할 듯
profile
첫 시작!

0개의 댓글