/ ALGORITHM

Math 클래스

Algorithm 관련 포스팅

이 글은 알고리즘 문제를 풀면서 Math와 관련한 메서드를 정리한 것입니다.

제곱근

  • Math.sqrt(): double 타입의 인수를 전달하면 제곱근을 반환

      double sqrt(double a)
    
  • 예시

      System.out.println(Math.sqrt(3)); // 1.7320508075688772
      System.out.println(Math.sqrt(9)); // 3.0
      System.out.println(Math.sqrt(0)); // 0.0
      System.out.println(Math.sqrt(-9)); // NaN(Not A Number): 음수 입력시 잘못된 입력임을 나타냄 
    
    • result
      1.7320508075688772
      3.0
      0.0
      NaN
    

올림/반올림/내림

  • Math.ceil(): 주어진 값을 올림하여 반환
  • Math.round(): 소수 첫째 자리에서 반올림한 long 타입의 정수값을 반환
  • Math.floor(): 주어진 값을 내림하여 반환

      double ceil(double a)
      long round(double a)
      double floor(double a)
    
  • 예시

      double d = 1.234567;
      double d2 = 9.8765432;
        
      System.out.println(Math.ceil(d)); // 2.0
      System.out.println(Math.ceil(d2)); // 10.0
        
      System.out.println(Math.round(d)); // 1
      System.out.println(Math.round(d2)); // 10
        
      System.out.println(Math.floor(d)); // 1.0
      System.out.println(Math.floor(d2)); // 9.0
    
    • result
      2.0
      10.0
      1
      10
      1.0
      9.0
    

난수

  • Math.random(): 0.0 ≤ x <1.0 범위의 double 타입 난수를 반환

      double random()
    
  • 예시: 1≤ x < 3 범위의 난수를 생성
    1. Math.random() 범위

       0.0 <= Math.random() < 1.0
      
    2. 각 변에 3을 곱함

       0.0 * 3 <= Math.random() * 3 < 1.0 * 3
      
    3. int로 형변환

       (int)0.0 <= (int)(Math.random() * 3) < (int)3.0
      
    4. 각 변에 1을 더함

       1 <= (int)(Math.random() * 3) + 1 < 4
      
  • 예시

      // 1 <= x < 10 사이 난수
      System.out.println((int)(Math.random()*10) + 1); // 9
        
      // 1 <= x < 3 사이 난수
      System.out.println((int)(Math.random()*3) + 1); // 1
    
    • result
      9
      1
    

최댓값/최솟값

  • Math.max(): 주어진 두 값을 비교하여 큰 쪽을 반환

      int max(int a, int b)
      double max(double a, double b)
      float max(float a, float b)
      long max(long a, long b)
    
  • Math.min(): 주어진 두 값을 비교하여 작은 쪽을 반환

      int min(int a, int b)
      double min(double a, double b)
      float min(float a, float b)
      long min(long a, long b)
    
  • 예시

      // 최댓값
      System.out.println(Math.max(7, 2)); // 7
      System.out.println(Math.max(-5.2, 3.14)); // 3.14
      System.out.println(Math.max(1.4f, 3.14f)); // 3.14
      System.out.println(Math.max(123, 100L)); // 123
        
      // 최솟값
      System.out.println(Math.min(3, 8)); // 3
      System.out.println(Math.min(-1.05, 4.8)); // -1.05
      System.out.println(Math.min(2.56f, -2.84f)); // -2.84
      System.out.println(Math.min(398L, 077)); // 63
    
    • result
      7
      3.14
      3.14
      123
        
      3
      -1.05
      -2.84
      63