κ°œλ°œμΌμ§€

[Java] Math ν•¨μˆ˜ / μ •μˆ˜ 제곱근 νŒλ³„ λ³Έλ¬Έ

Algorithm

[Java] Math ν•¨μˆ˜ / μ •μˆ˜ 제곱근 νŒλ³„

O'mil 2024. 5. 8. 15:27
728x90

πŸ”— 링크

μ •μˆ˜ μ œκ³±κ·Ό νŒλ³„

 

πŸ“Œ 문제 μ„€λͺ…

  • μž„μ˜μ˜ μ–‘μ˜ μ •μˆ˜ n에 λŒ€ν•΄, n이 μ–΄λ–€ μ–‘μ˜ μ •μˆ˜ x의 μ œκ³±μΈμ§€ μ•„λ‹Œμ§€ νŒλ‹¨
    n이 μ–‘μ˜ μ •μˆ˜ x의 제곱이라면 x+1의 μ œκ³±μ„ 리턴,
    μ•„λ‹ˆλΌλ©΄ -1 리턴

 

πŸ‘€ 예제

  • 121은 μ–‘μ˜ μ •μˆ˜ 11의 μ œκ³±μ΄λ―€λ‘œ, (11+1)을 μ œκ³±ν•œ 144λ₯Ό 리턴
  • 3은 μ–‘μ˜ μ •μˆ˜μ˜ 제곱이 μ•„λ‹ˆλ―€λ‘œ, -1을 리턴

 

πŸ’» μ½”λ“œ

class Solution {
    public long solution(long n) {
        
        for (int i = 1; i <= (int)(n/2); i++) {
            
            if (i * i == n) {
                return (i+1)*(i+1);
            }
        }
        
        return -1;
    }
}

→ ν•˜λ‚˜ν•˜λ‚˜ λΉ„κ΅ν•˜λ €κ³  ν–ˆλŠ”λ° μ—λŸ¬κ°€ 났닀.

μ•„λ§ˆλ„, μ‹œκ°„ 초과둜 μ‹€νŒ¨μΈ 것 κ°™λ‹€..

 

πŸ’‘ κ²°κ³Ό

  • μ •ν™•μ„±: 61.1

 


πŸ“ Math ν•¨μˆ˜

  • java.lang.Math ν΄λž˜μŠ€λŠ” μˆ˜ν•™ 계산에 μ‚¬μš©ν•  수 μžˆλŠ” λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•¨.
    (정적(static)μ΄λ―€λ‘œ importλ‚˜ 클래슀 μ„ μ–Έ 없이 λ°”λ‘œ μ‚¬μš© κ°€λŠ₯)
λ©”μ†Œλ“œ μ„€λͺ…
static double random() 랜덀 ν•¨μˆ˜
: 0.0 ~ 1.0 λ²”μœ„μ—μ„œ μž„μ˜μ˜ doubleν˜• 값을 ν•˜λ‚˜ μƒμ„±ν•˜μ—¬ λ°˜ν™˜ν•¨.
static double abs(double a)
static double abs(float a)
static double abs(int a)
static double abs(long a)
μ ˆλŒ“κ°’ ν•¨μˆ˜
static double ceil(double a) 올림 ν•¨μˆ˜
: aκ°’μ˜ μ†Œμˆ˜ 뢀뢄이 μ‘΄μž¬ν•˜λ©΄ 무쑰건 올리고 λ°˜ν™˜ν•¨.
static double floor(double a) λ‚΄λ¦Ό ν•¨μˆ˜
: aκ°’μ˜ μ†Œμˆ˜ 뢀뢄이 μ‘΄μž¬ν•˜λ©΄ 무쑰건 버리고 λ°˜ν™˜ν•¨.
static long round(double a)
static int round(float a)
반올림 ν•¨μˆ˜
: a의 μ†Œμˆ˜μ  첫째 μžλ¦¬μ—μ„œ λ°˜μ˜¬λ¦Όν•œ μ •μˆ˜λ₯Ό λ°˜ν™˜ν•¨.
static double rint(double a) κ°€μž₯ κ°€κΉŒμš΄ μ •μˆ˜κ°’μ„ double ν˜•μœΌλ‘œ λ°˜ν™˜ν•¨.
static double max(double a, double b)
static float max(float a, float b)
static long max(long a, long b)
static int max(int a, int b)
a, b 두 κ°’ 쀑 큰 값을 λ°˜ν™˜
static double min(double a, double b)
static float min(float a, float b)
static long min(long a, long b)
static int min(int a, int b)
a, b 두 κ°’ 쀑 μž‘μ€ 값을 λ°˜ν™˜
static double pow(double a, double b) a, bλ₯Ό 가지고 제곱 연산을 μˆ˜ν–‰ν•΄ a^bλ₯Ό λ°˜ν™˜
ex) pow(2, 5) //32
static double sqrt(double a) a의 제곱근 값을 λ°˜ν™˜ν•¨.
ex) sqrt(25) //5
static double sin(double a)
static double cos(double a)
static double tan(double a)
a의 삼각 ν•¨μˆ«κ°’μ„ λ°˜ν™˜ν•¨.
static double todegrees(double angrad) ν˜Έλ„λ²•μ˜ λΌλ””μ•ˆ 값을 λŒ€λž΅μ μΈ μœ‘μ‹­λΆ„λ²•μ˜ 각도 κ°’μœΌλ‘œ λ³€ν™˜ν•¨.
static double toRadians(double angdeg) μœ‘μ‹­λΆ„λ²•μ˜ 각도 값을 λŒ€λž΅μ μΈ ν˜Έλ„λ²•μ˜ λΌλ””μ•ˆ κ°’μœΌλ‘œ λ³€ν™˜ν•¨.

 

 

πŸ’» μ½”λ“œ

class Solution {
    public long solution(long n) {
        
        double num = Math.sqrt(n);
        
        if (num % 1 == 0) {
            return (long)Math.pow((num+1), 2);
        } else {
            return -1;
        }
    }
}

 

πŸ”’ λ‹€λ₯Έ μ‚¬λžŒμ˜ 풀이

class Solution {
  public long solution(long n) {
      if (Math.pow((int)Math.sqrt(n), 2) == n) {
            return (long) Math.pow(Math.sqrt(n) + 1, 2);
        }
        return -1;
  }
}

→ μ‘°κ±΄λ¬Έμ—μ„œ μ œκ³±κ·Όμ„ λ‹€μ‹œ μ œκ³±ν•œ 것이 nκ³Ό κ°™λ‹€λ©΄ (n+1)의 제곱 리턴

같은 ν’€μ΄μ§€λ§Œ 되게 κ°„λ‹¨ν•˜λ‹€..

 

 


πŸ“šReference

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ •μˆ˜ μ œκ³±κ·Ό νŒλ³„-JAVA

https://thalals.tistory.com/13

728x90
Comments