문제 설명

정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.


제한사항

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

입출력 예

num1num2result
321500
732333
11662

입출력 예 설명

입출력 예 #1

  • num1이 3, num2가 2이므로 3 / 2 = 1.5에 1,000을 곱하면 1500이 됩니다.

입출력 예 #2

  • num1이 7, num2가 3이므로 7 / 3 = 2.33333...에 1,000을 곱하면 2333.3333.... 이 되며, 정수 부분은 2333입니다.

입출력 예 #3

  • num1이 1, num2가 16이므로 1 / 16 = 0.0625에 1,000을 곱하면 62.5가 되며, 정수 부분은 62입니다.

✍ SOLUTION1


function solution(num1, num2) {
    return Math.trunc(num1 / num2 * 1000);
}

/* Math.trunc()는 소수점 이하는 다 버린다. 
ex) Math.trunc(23.3) = 23, Math.trunc(-23.3) = -23 */

✍ SOLUTION2


function solution(num1, num2) {
    return Math.floor((num1/num2)*1000);
}

/* Math.floor()는 소수값이 존재할 때 소수값을 버리는 역할을 하는 함수이다.
ex) Math.floor(23.3) = 23, Math.floor(-23.3) = 24
음수인 경우에 소수점 아래를 내림하여 정수를 반환함. */

✍ SOLUTION3


const solution = (num1, num2) => Math.floor((num1/num2)*1000);

// 화살표 함수의 유일한 문장이 'return'일 때 'return'과 중괄호({})를 생략할 수 있다.

✍ SOLUTION4


const solution = (num1, num2) => ~~((num1/num2)*1000);

/* 틸트(Tilt) 연산자를 사용하게 되면 내부적으로 32비트 정수로 변환 후 NOT 연산자를 실행한다. 
Tilt(~) 사용시 숫자의 소수점을 버리게 되며, ~(Tilt) 연산을 두번 시킴으로써 결과적으로는 
원래 상태로 되돌리게 된다. Math.floor()와 동일하게 적용되는데 음수에서는 결과값이 달라질수 있다.

~~33.3;  // 33
Math.floor(33.33);  //33

~~-11.2; // -11
Math.floor(-11.2); // -12 */

출처 : 프로그래머스 스쿨 | 코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/120806

0개의 댓글