Programming/Algorithm

[Java] ๋ชจ๋“ˆ๋Ÿฌ ์ œ๊ณฑ๊ทผ

Space_Jin 2025. 5. 1. 20:41
728x90
๋ฐ˜์‘ํ˜•

๋ชจ๋“ˆ๋Ÿฌ ์ œ๊ณฑ๊ทผ์ด๋ž€?

๊ฑฐ๋“ญ์ œ๊ณฑ๊ทผ(P^N)์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์‹

 

 

๊ฑฐ๋“ญ์ œ๊ณฑ๊ทผ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹จ์ˆœ ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด์„œ ๊ณฑ์…ˆ์„ ํ•˜์˜€์„ ๋•Œ, ๊ทธ ํšŸ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ๊ทน๊ฒฉํžˆ ๋น„ํšจ์œจ์ ์ด ๋œ๋‹ค.

 

๋‹จ์ˆœ ๋ฃจํ”„
for(int i = 0; i < N; i ++) {
	P *= P;
}

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ P^N์„ ๊ตฌํ•˜๋ฉด O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค.

 

๋ชจ๋“ˆ๋Ÿฌ ์ œ๊ณฑ๊ทผ ์˜ˆ์‹œ ์ฝ”๋“œ
public static long power(long P, long N) {
    long result = 1;

    while(N > 0) {
        if(N % 2 == 1) {
            result *= P;
        }
        P *= P;
        N /= 2;
    }

    return result;
}

๋ชจ๋“ˆ๋Ÿฌ ์ œ๊ณฑ๊ทผ์„ ์ด์šฉํ•˜๋ฉด O(logN)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์œ„ ์ฝ”๋“œ๋Š” 2์ง„์ˆ˜์˜ ์‰ฌํ”„ํŠธ ์—ฐ์‚ฐ๊ณผ ๊ฐ™์€ ๋™์ž‘์ด๋ผ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•