๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/๐Ÿต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(Java)

์ •์ˆ˜ ์ œ๊ณฑ๊ทผ ํŒ๋ณ„

by carrot0911 2024. 11. 6.

๋ฌธ์ œ ์„ค๋ช…

์ž„์˜์˜ ์–‘์˜ ์ •์ˆ˜ n์— ๋Œ€ํ•ด, n์ด ์–ด๋–ค ์–‘์˜ ์ •์ˆ˜ x์˜ ์ œ๊ณฑ์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.
n์ด ์–‘์˜ ์ •์ˆ˜ x์˜ ์ œ๊ณฑ์ด๋ผ๋ฉด x+1์˜ ์ œ๊ณฑ์„ ๋ฆฌํ„ดํ•˜๊ณ , n์ด ์–‘์˜ ์ •์ˆ˜ x์˜ ์ œ๊ณฑ์ด ์•„๋‹ˆ๋ผ๋ฉด -1์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

์ œํ•œ ์‚ฌํ•ญ

  • n์€ 1 ์ด์ƒ, 50,000,000,000,000 ์ดํ•˜์ธ ์–‘์˜ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

n return
121 144
3 -1

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ#1

  • 121์€ ์–‘์˜ ์ •์ˆ˜ 11์˜ ์ œ๊ณฑ์ด๋ฏ€๋กœ, (11 + 1)๋ฅผ ์ œ๊ณฑํ•œ 144๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ#2

  • 3์€ ์–‘์˜ ์ •์ˆ˜์˜ ์ œ๊ณฑ์ด ์•„๋‹ˆ๋ฏ€๋กœ, -1์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

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

์ฝ”๋“œ ์„ค๋ช…

์กฐ๊ฑด๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

double x = Math.sqrt(n);
๋ณ€์ˆ˜ x๋ฅผ double ํƒ€์ž…์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ณ  Math.sqrt()๋ฅผ ํ†ตํ•ด n์˜ ์ œ๊ณฑ๊ทผ์„ ๊ตฌํ•ด์„œ x์— ์ €์žฅํ•œ๋‹ค.

if (x == (int) x) { }
์กฐ๊ฑด๋ฌธ์„ ์ด์šฉํ•ด์„œ ์ €์žฅํ•œ x์˜ ๊ฐ’์ด ์ •์ˆ˜์ผ ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰๋˜๋„๋ก ํ•œ๋‹ค.

answer = ((long) x + 1) * ((long) x + 1)
๋ณ€์ˆ˜ answer์— (x+1)์˜ ์ œ๊ณฑ ๊ฐ’์„ ์ €์žฅํ•˜๋Š”๋ฐ answer๊ฐ€ long ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์‚ฐํ•  ๋•Œ๋„ (long)์„ ์•ž์— ๋ถ™์—ฌ long ํƒ€์ž…์œผ๋กœ ํ˜•๋ณ€ํ™˜ ํ›„ ๊ณ„์‚ฐํ•œ๋‹ค.