문제1
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
* 내 풀이
function solution(num1, num2) {
const num = Math.floor((num1 / num2) * 1000)
return num
}
*다른 사람 풀이
function solution(num1, num2) {
return Math.trunc(num1 / num2 * 1000);
}
나는 Math.floor를 사용했는데 다른 사람 풀이를 보니 Math.trunc()를 사용했다.
- Math.trunc() : 소수점 이하를 잘라냄 / Math.trunc(3.14) -> 3
- Math.floor() : 주어진 숫자보다 작거나 같은 가장 큰 정수를 반환 / Math.floor(-3.14) -> -4
주어진 문제가 정수를 반환하는 거였으므로 Math.trunc가 더 적합한 것 같다.
문제2
정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.
* 내 풀이
function solution(num1, num2) {
if(num1 === num2) {
return 1
} else {
return -1
}
}
* 다른 사람 풀이
function solution(num1, num2) {
var answer = num1 === num2 ? 1 : -1;
return answer;
}
삼항연산자를 쓸 생각을 왜 못했을까..?
문제3
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
* 내 풀이
function solution(number1, denom1, number2, denom2) {
let answer = [];
// 분모
let denom = denom1 * denom2;
// 분자
let num = number1 * denom2 + number2 * denom1;
let a = num;
let b = denom;
const gcd = (a, b) => (a % b === 0 ? b : gcd(b, a % b));
answer[0] = a / gcd(a, b);
answer[1] = b / gcd(a, b);
return answer
}
* 다른 사람 풀이
function fnGCD(a, b){
return (a%b)? fnGCD(b, a%b) : b;
}
function solution(denum1, num1, denum2, num2) {
let denum = denum1*num2 + denum2*num1;
let num = num1 * num2;
let gcd = fnGCD(denum, num); //최대공약수
return [denum/gcd, num/gcd];
}
- 입문이라며,,,! 입문도 머리 으깨지는 나. 열심히 하자..
이 문제의 관건은 최대공약수 구하기
안녕 나의 5학년,,
1. a, b가 나눠진다면 b가 최대 공약수 ( a > b)
2. a, b가 나눠지지 않는다면 b와 a % b(나머지)로 다시 나누기
3. a, b가 나눠진다면 a % b가 최대 공약
문제 4
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
* 내 풀이
function solution(numbers) {
return numbers.map((arr) => arr * 2)
}
* 다른 사람 풀이
function solution(numbers) {
return numbers.reduce((a, b) => [...a, b * 2], []);
}
- reduce() : 배열의 각 요소에 대해 주어진 리듀서 (reducer) 함수를 실행하고, 하나의 결과값을 반환
arr.reduce(callback[, initialValue])
- 배열이 비어있는데 initailValue도 제공하지 않으면 타입에러 발생.
- 초기값을 주는 것이 더 안전함.
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 순서쌍의 개수 구하기 (1) | 2024.03.12 |
---|---|
[코딩 테스트] 문자열 돌리기 (0) | 2024.03.11 |
[코딩테스트] day3 짝수는 싫어요/ 홀수 배열 구하기 (0) | 2024.03.04 |
[코딩테스트] day3 중앙값 구하기 (0) | 2024.03.04 |
코딩테스트 준비 (0) | 2024.03.01 |