๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/-

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ •์ˆ˜ ์ œ๊ณฑ๊ทผ ํŒ๋ณ„

by syLim___ 2023. 3. 24.
728x90

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

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


์•„์ด๋””์–ด

1. ์†Œ์ธ์ˆ˜๋ถ„ํ•ด๋ฅผ ํ•ด์„œ ์ธ์ˆ˜๋“ค์„ ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค.

2. ์ธ์ˆ˜๋“ค ์ค‘ ํ•˜๋‚˜๋ผ๋„ ํ™€์ˆ˜๊ฐœ๋ผ๋ฉด ์ œ๊ณฑ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ, -1์„ ๋ฆฌํ„ด

3. ์–ด๋–ค ์–‘์ˆ˜ x๋ฅผ ์ฐพ๊ณ  (x+1)์˜ ์ œ๊ณฑ์„ ๋ฆฌํ„ดํ•œ๋‹ค.

 

์ œ์ถœ ์ฝ”๋“œ

def solution(n):

    factor = [] # ์†Œ์ธ์ˆ˜๋“ค์„ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•œ๋‹ค.
    i = 2
    while i <= n:
        if n % i == 0:
            factor.append(i)
            n /= i
        else:
            i += 1
    
    factor_set = set(factor)
    
    # ์›๋ž˜์˜ ์ˆ˜ x ๊ตฌํ•˜๊ธฐ!!
    x = 1
    for i in factor_set:
        if factor.count(i) % 2 != 0: # ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ฉด ์ œ๊ณฑ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค
            return -1
        x *= pow(i,factor.count(i)//2)
    return (x+1) ** 2

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ํ’€์ด

๋‹ค๋“ค.. sqrt ์ผ๋„ค.... ํž

728x90