Hamutaro - Hamtaro 4

Algorithm/Programmers

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€/JAVA] μ •μˆ˜ 제곱근 νŒλ³„

carsumin 2021. 11. 19. 21:52

https://programmers.co.kr/learn/courses/30/lessons/12934

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ •μˆ˜ 제곱근 νŒλ³„

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

programmers.co.kr

 

 

n이 μ–‘μ˜ μ •μˆ˜ x의 제곱이라면 (x+1)^2 을 λ¦¬ν„΄ν•˜κ³ , μ•„λ‹ˆλΌλ©΄ -1을 λ¦¬ν„΄ν•˜λŠ” λ¬Έμ œλ‹€.

μ²˜μŒμ— Math ν΄λž˜μŠ€κ°€ μ œκ³΅ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  ν’€μ—ˆλ”λ‹ˆ λͺ‡κ°œμ˜ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ—μ„œ μ‹œκ°„μ΄ˆκ³Όκ°€ λ–΄λ‹€.

 

두 κ°€μ§€ λ©”μ†Œλ“œλ₯Ό μ•Œκ³  있으면 κ°„λ‹¨ν•˜κ²Œ ν’€ 수 μžˆλ‹€.

 

* μ œκ³±ν•˜κΈ° : Math.pow(double a, double n)

* 제곱근 κ΅¬ν•˜κΈ° : Math.sqrt(double a)

 

Math ν΄λž˜μŠ€κ°€ μ œκ³΅ν•˜λŠ” λ©”μ†Œλ“œλŠ” λͺ¨λ‘ μ •μ μ΄λ―€λ‘œ Import 선언을 ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

 

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

 

pow(), sqrt() λ©”μ†Œλ“œλŠ” λͺ¨λ‘ doubleν˜•μ„ λ°˜ν™˜ν•˜κΈ° λ•Œλ¬Έμ— 문제 ν˜•μ‹μ— λ”°λΌμ„œ longν˜•μœΌλ‘œ μΊμŠ€νŒ…ν•˜λŠ” 과정이 ν•„μš”ν•˜λ‹€.

제곱근이 μ–‘μ˜ μ •μˆ˜κ°€ μ•„λ‹Œ κ²½μš°μ—λŠ” λ£¨νŠΈκ°’μ„ μƒκ°ν•˜λ©΄ λœλ‹€. (μž…μΆœλ ₯ 예 n=3일 경우 n의 μ œκ³±κ·Όμ€ 3^1/2)