[챌린지 1일차] 몫 구하기

eeeyooon·2023년 12월 1일

📆 231201 - Javascript 알고리즘 100일 챌린지 시작

몫 구하기

문제 링크

📩 문제 설명

정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.

제한사항

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100

입출력 예

num1num2result
1052
723

제출 답안

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.15가 됨. 이걸 활용해서 정수만 나오도록 할 수 있음. (비트 단위 연산자를 사용하면 소숫점을 잘라내기 때문에 그 원리를 이용한 것임.) Math.floor()도 사용 가능함. 이것은 내림이기 때문에 몫만 구할 때 편리함.


0개의 댓글