두 수의 합
정수 num1과 num2가 주어질 때, num1과 num2의 합을 return하도록 soltuion 함수를 완성해주세요.
- -50,000 ≤ num1 ≤ 50,000
- -50,000 ≤ num2 ≤ 50,000
function solution(num1, num2) {
const = num1 + num2;
return sum;
}
// 다른 사람의 풀이
function solution(num1, num2) {
var answer = -1;
answer = parseInt(num1) + parseInt(num2);
return answer;
}
<다른 사람의 풀이에 대한 이해>
var는 재할당이 가능하므로
answer에 -1이 할당되어 있지만 새롭게 식을 작성하여 재할당
-> var는 호이스팅 문제가 있으므로 쓰지 않는 것을 권장한다.
let을 사용했어도 동일하게 접근할 수 있다.
'정수'라는 조건이 있으므로, 사실상 parseInt를 사용하지 않아도 해결 가능한 문제
두 수의 차
정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.
- -50000 ≤ num1 ≤ 50000
- -50000 ≤ num2 ≤ 50000
function solution(num1, num2) {
const = num1 - num2;
return sum;
}
// 다른 사람의 풀이
const solution = (num1, num2) => num1 - num2;
<다른 사람의 풀이에 대한 이해>
와.. 문제 푸는 데에만 급급했지, 화살표 함수로 간결하게 만들어볼 생각은 못했다.
두 수의 곱
정수 num1, num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요.
- 0 ≤ num1 ≤ 100
- 0 ≤ num2 ≤ 100
const solution = (num1, num2) => num1 * num2;
// 다른 사람의 풀이
functtion solution(num1, num2) {
return Math.floor(num1 * num2);
}
화살표 함수로 해결하는 풀이를 보고, 곧장 적용했다.
<다른 사람의 풀이에 대한 이해>
'정수'라는 조건이 있기 때문에, Math.floor()를 사용하지 않고도 해결할 수 있는 문제였다.
몫 구하기
정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
- 0 < num1 ≤ 100
- 0 < num2 ≤ 100
const solution = (num1, num2) => Math.floor(num1 / num2);
// 다른 풀이 방법
function solution(num1, num2) {
const answer = Math.floor(num1 / num2);
return answer;
}
// 다른 사람의 풀이
function solution(num1, num2) {
return parseInt(num1 / num2);
}
funtion solution(num1, num2) {
return Math.trunc(num1 / num2);
}
function solution(num1, num2) {
reutrn (num1 /num2) << 0;
}
function solution(num1, num2) {
return ~~(num1 / num2);
}
몫을 구하는 문제이므로, 계산하고 남은 값의 정수를 구하기 위해 Math.floor()를 사용하였다.
<다른 사람의 풀이에 대한 이해>
큰 수에서는 type number에 string이 들어가는 경우도 있기 때문에, 소수점 이하를 절삭하여 정수 값을 return하려는 목적으로 Math.floor 대신에 parseInt를 사용해서는 안 됩니다.
--> Math.floor()와 parseInt()의 차이
- parseInt()
- 문자열을 인자로 받기 때문에, 불필요한 계산 절차를 거친다.
1) number로 받은 변수를 string으로 변경하고
2) 10진수 추론을 위해, string 앞 2글자가 0x나 0X인지 비교 - Math.floor()
- 소수점 이하 '내림'
- 조건이 정수이기 때문에, Math.floor()를 사용해도 정답!
그러나 '음수' 조건이었다면 틀리게 된다.
만약 음수일 경우,
Math.floor() 함수는 -1.xxx일 경우 -2를 반환한다.
parseInt()는 -1.xxx일 경우 -1을 반환한다.
Math.trunc()
-> 소수점 이하 '버림'을 나타낸다.
<< 0
틸트 연산자( ~~ )
-> double tilde: not의 기능을 하는 비트 연산자 - Math.floor()과 동일한 역할
-> 특정 브라우저에서 Math.floor()나 parseInt보다 빠른 결과를 나타낼 수 있다.
그러나 유지보수하는 사람의 입장에서 가독성이 떨어지므로 추천하지 않는다.
참고
'코딩테스트 > 프로그래머스 0단계 - 입문' 카테고리의 다른 글
프로그래머스 0단계 - Day5 수학, 배열 (0) | 2024.03.15 |
---|---|
프로그래머스 0단계 - Day4 수학, 배열 (0) | 2024.03.14 |
프로그래머스 0단계 - Day3 사칙연산, 조건문, 배열 (0) | 2024.03.13 |
프로그래머스 0단계 - Day2 사칙연산, 조건문, 배열 (0) | 2024.03.11 |
시작하기에 앞서 (0) | 2024.03.11 |
댓글