
📆 231201 - Javascript 알고리즘 100일 챌린지 시작
정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
| num1 | num2 | result |
|---|---|---|
| 10 | 5 | 2 |
| 7 | 2 | 3 |
function solution(num1, num2) {
return parseInt(num1/ num2);
}
몫을 구하기 위해 우선 나누고, 몫이 정수로 나누어 떨어지지 않을 경우의 처리를 위해 parseInt()를 사용하였다.
function solution(num1, num2) {
var answer = ~~(num1 / num2);
return answer;
}
num1/num2를 하면 정수가 아닌 실수를 출력됨. Math.floor()를 쓸 수 있지만 알고리즘 문제에서는 ~~(num1/num2)로 쓸 수 있음. ~는 부정 연산자인데, 비트가 5라면 1001인데, 0110으로 뒤집어줌. 결론만 말하자면 다 뒤집었을 때 -(n+1)이 됨. 예를 들어 ~5를 해주면 -6이 됨. 물결을 두번 하면 ~~5를 하면 다시 5가 됨. ~~5.1도 5가 됨. 이걸 활용해서 정수만 나오도록 할 수 있음. (비트 단위 연산자를 사용하면 소숫점을 잘라내기 때문에 그 원리를 이용한 것임.) Math.floor()도 사용 가능함. 이것은 내림이기 때문에 몫만 구할 때 편리함.