ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Math
    코드 찌끄리기 2024. 7. 14. 01:36

    알고리즘 문제를 풀어보는데

    function solution(num1, num2) {
      var answer = 0
      return answer;
    }
    문제1. num1은 10이고 num2는 5일때 결과는 2가 나와야 하며
    문제2. num1은 7이고 num2는 2일때 결과는 3이 나와야 한다.

     

    이런 문제가 나왔다. 0단계 문제인데

     

    var answer = num1 / num2; 작성 후
    체크를 해봤는데 당연히 문제 2번 7/2는 값이 3.5이기 때문에 틀렸다고 나왔다.
    그럼 어떻게 해야 하는 건지 다른 사람들의 답변을 봤는데
    var answer = Math.floor(num1 / num2);라고 한다.
    검색해 봤더니 Math.floor(x)는 주어진 숫자 x를 가장 가까운 정수로 내림하여 반환한다고 한다. 그래서 문제 2번의 답은 3.5이니까 정수로 내림하여 3으로 반환 시킨 거다.

     

    역시 또 내가 모르는 기능이 있나라고 생각했지만 내 머리로는 끄집어낼 수 없기에 답변을 보길 잘했던것 같다.(이렇게 알아가는거지..)

    function solution(num1, num2) {
        var answer = Math.floor(num1 / num2);
        return answer;
    }
    solution(10, 5); // 2
    solution(7, 2); // 3


    그 외에도 Math에 대한 여러 가지가 있길래 자주 쓰일 거 같아서 내가 보려고 정리를 조금 해보았다.

     

    /* ----- 기본적인 수학 함수 ----- */
    // *****Math.abs(x) - 주어진 숫자 x의 [절대값]을 반환
    // x가 [양수]일 경우 입력값 x를 [그대로] 반환
    // x가 [음수]일 경우 입력값 x의 부호를 바꾼 [양수] 값을 반환
    // x가 [0]일 경우 0을 반환
    console.log( Math.abs(3) ) // 3
    console.log( Math.abs(-3) ) // 3
    console.log( Math.abs(0) ) // 0
    
    
    // *****Math.sign(x) - 주어진 숫자 x의 [부호]를 반환
    // x가 [양수]일 경우 1을 반환
    // x가 [음수]일 경우 -1을 반환
    // x가 [0]일 경우 0을 반환
    console.log( Math.sign(5) ) // 1
    console.log( Math.sign(-5) ) // -1
    console.log( Math.sign(0) ) // 0
    
    
    // *****Math.pow(x, y) - x값을 y값으로 [제곱]한 값을 반환
    console.log( Math.pow(2, 3) ); // 8 - 정수 제곱
    console.log( Math.pow(2.5, 3) ); // 15.625 - 소수 제곱
    console.log( Math.pow(-2, 4) ); // 16 - 음수 제곱
    console.log( Math.pow(9, 0.5) ); // 3 - 제곱근 계산
    console.log( Math.pow(4, -0.5) ); // 0.5 - 거듭제곱 계산
    
    
    // *****Math.sqrt(x) - 주어진 숫자 x의 [제곱근]을 반환
    // 주어진 숫자 x의 제곱근 [결과값이 정수]이면 정수의 제곱근이다.(유리수)
    // 주어진 숫자 x의 제곱근 [결과값이 소수]이면 소수의 제곱근이다.(무리수)
    console.log( Math.sqrt(25) ); // 5 - 정수 제곱근
    console.log( Math.sqrt(2) ); // 1.4142135623730951 - 소수 제곱근
    
    
    // *****Math.cbrt(x) - 주어진 숫자 x의 [세제곱근]을 반환
    // 주어진 숫자 x의 세제곱근 [결과값이 정수]이면 정수의 세제곱근이다.(유리수)
    // 주어진 숫자 x의 세제곱근 [결과값이 소수]이면 소수의 세제곱근이다.(무리수)
    console.log( Math.cbrt(27)); // 3 - 정수 세제곱근
    console.log( Math.cbrt(2) ); // 1.2599210498948732 - 소수 세제곱근
    
    /* --------------------------------------------------------------------------- */
    
    /* ----- 반올림 및 절사 함수 ----- */
    // Math.round(x) - 주어진 숫자 x를 [가장 가까운 정수로 반올림]하여 반환
    const a1 = 4.4;
    const a2 = 4.5;
    const a3 = -4.5;
    const a4 = -4.6;
    console.log( Math.round(a1) ); // 4
    console.log( Math.round(a2) ); // 5
    console.log( Math.round(a3) ); // -4
    console.log( Math.round(a4) ); // -5
    
    
    // Math.floor(x) - 주어진 숫자 x를 [가장 가까운 정수로 내림]하여 반환
    const b1 = 3.2;
    const b2 = 3.9;
    const b3 = -3.9;
    console.log( Math.floor(b1) ); // 3
    console.log( Math.floor(b2) ); // 3
    console.log( Math.floor(b3) ); // -4
    
    
    // Math.ceil(x) - 주어진 숫자 x를 [가장 가까운 정수로 올림]하여 반환
    const c1 = 2.2;
    const c2 = 2.9;
    const c3 = -2.9;
    const c4 = -2.1;
    console.log( Math.ceil(c1) ); // 3
    console.log( Math.ceil(c2) ); // 3
    console.log( Math.ceil(c3) ); // -2
    console.log( Math.ceil(c4) ); // -2
    
    
    // Math.trunc(x) - 주어진 숫자 x의 [정수 부분만]을 반환(소수 부분을 버린다.)
    const d1 = 6.8;
    const d2 = 6.1;
    const d3 = 0.1;
    const d4 = 0.9;
    const d5 = -6.9;
    console.log(Math.trunc(d1)); // 6
    console.log(Math.trunc(d2)); // 6
    console.log(Math.trunc(d3)); // 0
    console.log(Math.trunc(d4)); // 0
    console.log(Math.trunc(d5)); // -6
    
    /* --------------------------------------------------------------------------- */
    
    /* ----- 비교 함수 ----- */
    // Math.max(x1, x2) - 주어진 숫자들 중에서 [가장 큰 값]을 반환
    // Math.min(x1, x2) - 주어진 숫자들 중에서 [가장 작은 값]을 반환
    const e1 = 5;
    const e2 = 4.9;
    const e3 = 2;
    const e4 = 1.7;
    const e5 = 3.6;
    console.log(Math.max(e1, e2, e3, e4, e5)); // 5
    console.log(Math.min(e1, e2, e3, e4, e5)); // 1.7
    
    /* --------------------------------------------------------------------------- */
    
    /* ----- 랜덤 숫자 생성 함수 ----- */
    // Math.random() - [0~1 미만]의 임의의 부동 소수점 숫자를 반환(임의의 숫자를 생성할 수 있다.)
    console.log(Math.random()); // [0 ~ 1]의 숫자가 [랜덤]으로 출력(소숫점)
    console.log(Math.random() * 10); // [0 ~ 10]의 숫자가 [랜덤]으로 출력(소숫점)
    console.log(Math.floor(Math.random() * 50) + 1) // [1 ~ 50]의 숫자가 [랜덤]으로 출력(floor을 사용해 정수로 반환)
    
    /* --------------------------------------------------------------------------- */
    
    // 그 외 이런게 더 있다고함.
    // Math.log(x) - x의 자연 로그값을 반환합니다 (밑이 e인 로그)
    // Math.exp(x) - e (자연 상수)의 x 제곱을 반환합니다.
    
    // Math.sin(x) - 인자 x의 [사인]값을 반환합니다.
    // Math.cos(x) - 인자 x의 [코사인]값을 반환합니다.
    // Math.tan(x) - 인자 x의 [탄젠트값]을 반환합니다.
    // Math.asin(x) - 인자 x의 [아크사인]값을 반환합니다.
    // Math.acos(x) - 인자 x의 [아크코사인]값을 반환합니다.
    // Math.atan(x) - 인자 x의 [아크탄젠트]값을 반환합니다.
    // Math.atan2(x, y) - [y 좌표와 x 좌표를 기반]으로 하는 [아크탄젠트]값을 반환합니다.

    이제 수학적인 문제가 나오면 Math를 사용해야겠지라는 생각을 할 것 같다.

     

Designed by Tistory.