[BOJ][๐ก5][๋ฐฑ์ค#01484] ๋ค์ด์ดํธ
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold V
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
์ฑ์์ด๋ ๋ค์ด์ดํธ๋ฅผ ์๋์ค์ด๋ค. ์ฑ์์ด๋ ์ ๋ง ์ ๋ง ๋ฌด๊ฒ๊ธฐ ๋๋ฌธ์, ์ ์ธ์ด ๋ถ์ ์ก๋ค. ์ฑ์์ด์ ํ๊ฒจ์ด ๋ค์ด์ดํธ ์๋๋ฅผ ๋ณด๊ณ ๋ง ์๋ ์ํ ํผ์๋ ์ฑ์์ด์๊ฒ ์๋ก์ด ์ ์ธ์ ์ ๋ฌผํด ์ฃผ์๋ค. ์ฑ์์ด๋ ์ํ ํผ์๊ฐย ์ ๋ฌผํด์ค ์ ์ธ ์์ ์ฌ๋ผ๊ฐ๋ค. โ์๋ผ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! G ํฌ๋ก๊ทธ๋จ์ด๋ ๋ ์ช์ดใ ใ โ๋ผ๊ณ ์ฑ์์ด๊ฐ ๋งํ๋ค. ์ฌ๊ธฐ์ ๋งํ๋ Gํฌ๋ก๊ทธ๋จ์ ์ฑ์์ด์ ํ์ฌ ๋ชธ๋ฌด๊ฒ์ ์ ๊ณฑ์์ ์ฑ์์ด๊ฐ ๊ธฐ์ตํ๊ณ ์๋ ๋ชธ๋ฌด๊ฒ์ ์ ๊ณฑ์ ๋บ ๊ฒ์ด๋ค. ์ฑ์์ด์ ํ์ฌ ๋ชธ๋ฌด๊ฒ๋ก ๊ฐ๋ฅํ ๊ฒ์ ๋ชจ๋ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ G๊ฐ ์ฃผ์ด์ง๋ค. G๋ 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค๋ถํฐ ํ ์ค์ ํ๋์ฉ ๊ฐ๋ฅํ ์ฑ์์ด์ ํ์ฌ ๋ชธ๋ฌด๊ฒ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ค. ๊ฐ๋ฅํ ๋ชธ๋ฌด๊ฒ๊ฐ ์์ ๋๋ -1์ ์ถ๋ ฅํ๋ค. ํ์ฌ ๋ชธ๋ฌด๊ฒ๋ ์์ฐ์๋ก ๋จ์ด์ง์ง ์์ ์๋ ์๋๋ฐ, ์ด๋ฐ ๊ฒฝ์ฐ๋ ์ ์ธํด์ผ ํ๋ค.
์์
์ ๋ ฅ
15
์ถ๋ ฅ
4
8
My Sol
def main():
G = int(input())
ret = []
for n in range(1, int(G**(1/2))+1):
if G%n: continue
n1, n2 = n, G//n
if not (n1 and n2): continue
if (n1==n2) or (n1+n2)%2: continue
ret.append((n1+n2)//2)
return ret[::-1] if ret else [-1]
print(*main(), sep='\n')
๋ฌธ์ ์ ํ์ด๋ณด๋ค ๋ฌธ์ ์์ฒด๋ฅผ ์ดํดํ๋ ๋ฐ์ ๋ ์๊ฐ์ด ๋ค์๋ ๋ฌธ์ ์๋ค. a**2 - b**2 = (a+b)*(a-b)
๋ผ๋ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ณ ์์ด์ผ ํ๋ค.
- ์ฐ์
(ํ์ฌ ๋ชธ๋ฌด๊ฒ**2 - ์์ ๋ชธ๋ฌด๊ฒ**2)
๋ฅผ ์๋ฏธํ๋G
๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ๋๋ค. ์ดG
๋ผ๋ ์๊ฐ ๋ ์์ฐ์์ ๊ณฑ์ผ๋ก ํํ๋ ์ ์๋ค๋ฉด ์ด๋ก๋ถํฐ ํ์ฌ ๋ชธ๋ฌด๊ฒ๋ฅผ ์ ์ถํ ์ ์๋ค. - ๋ ์์ฐ์์ ๊ณฑ์ผ๋ก ํํ๋๋ค๋ฉด, ์ด ๋ ์์ฐ์๋ฅผ
a
,b
๋ผ๊ณ ํ ๋, ๋ ์๋ ๋ชจ๋G
์ ์ฝ์๊ฐ ๋๋ค. ๋๋ฌธ์ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด ๊ณต์์ ํ์ฉํ๋ค. 1๋ถํฐG
์ ์ ๊ณฑ๊ทผ๊น์ง์ ๋ชจ๋ ์์ฐ์์ ๋ํดG
์ ๋๋์ด๋ณด์์ ๋, ๋๋์ด๋จ์ด์ง๋ฉด ํด๋นํ๋ ์์ ๊ทธ ๋๋์ด์ง ๋ชซ์ด ๋ชจ๋ ์ฝ์์ธ ๊ฒ์ด๋ค. - ๊ทธ๋ ๋ค๋ฉด ์ด๋ฅผ
n1
๊ณผn2
๋ก ์ง์ ํ๊ณ ํ์ค์ ์ผ๋ก ๋ฐฐ์ ํ๋ ์กฐ๊ฑด์ ๋๋ค. ์๋ฅผ ๋ค๋ฉด, ๋ ์๋ ๊ฐ๊ฐ ํ์ฌ์ ๊ณผ๊ฑฐ์ ๋ชธ๋ฌด๊ฒ๋ฅผ ์๋ฏธํ๋ฏ๋ก ๋ ๋ค 0์ด ๋๋ฉด ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชธ๋ฌด๊ฒ๋ ๋ ์ถ๊ฐ๋์๋ค๊ณ ํ์ผ๋ฏ๋กn1
๊ณผn2
๋ ๊ฐ์ผ๋ฉด ์๋๋ค. - ์ด๋ฅผ ๋ง์กฑํ๋ค๋ฉด
(ํ์ฌ ๋ชธ๋ฌด๊ฒ + ๊ณผ๊ฑฐ๋ชธ๋ฌด๊ฒ)*(ํ์ฌ ๋ชธ๋ฌด๊ฒ - ๊ณผ๊ฑฐ๋ชธ๋ฌด๊ฒ)
๊ฐ ๊ณงG
๊ฐ ๋ ํ ๋ฐ, ์ด๊ฒ์ด ๊ฐ๊ฐn2
์n1
์ด ๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ํ์ฌ ๋ชธ๋ฌด๊ฒ๋ ๋ ์์ ํฉ์ 2๋ก ๋๋(n1+n2)//2
์ด ๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ด ์์ฐ์์ฌ์ผ ํ๋ฏ๋ก ํฉ์ด ํ์๋ผ๋ฉด ์ญ์ ๋ฐฐ์ ํด์ค๋ค. - ๋ชจ๋ ๊ณผ์ ์ ํต๊ณผํ ์๊ฐ ํ์ฌ ๋ชธ๋ฌด๊ฒ์ ํ๋ณด๊ฐ ๋๋๋ฐ, ๋ฐ๋ณต๋ฌธ์ ์งํํ ์๋ก
n
๊ณผG//n
์ ๊ฐ๊ทน์ ์ขํ์ง๋ฏ๋ก ๋จผ์ ๋ฐ๊ฒฌ๋๋ ๋ชธ๋ฌด๊ฒ ํ๋ณด์ผ์๋ก ๋ ํฌ๋ค. ๋๋ฌธ์ ๋ชจ๋ ํ๋ณด๋ค์ ๋ชจ์ret
๋ฐฐ์ด์ ๋ค์ง์ด ๋ฐํํ๋ค. ๋ง์ฝ ํ๋ณด๊ฐ ์์ดret
์ด ์๋ค๋ฉด-1
์ ์ถ๋ ฅํ๊ธฐ ์ํด[-1]
์ ๋ฐํํ๋ค. main
ํจ์ ๋ฐ์์ ์ด๋ฅผ ํ ์ค์ฉ ์ถ๋ ฅํ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋๊ธ๋จ๊ธฐ๊ธฐ