[BOJ][๐ŸŸก5][๋ฐฑ์ค€#01484] ๋‹ค์ด์–ดํŠธ

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #1484


๋ฌธ์ œ

์„ฑ์›์ด๋Š” ๋‹ค์ด์–ดํŠธ๋ฅผ ์‹œ๋„์ค‘์ด๋‹ค. ์„ฑ์›์ด๋Š” ์ •๋ง ์ •๋ง ๋ฌด๊ฒ๊ธฐ ๋•Œ๋ฌธ์—, ์ €์šธ์ด ๋ถ€์…”์กŒ๋‹ค. ์„ฑ์›์ด์˜ ํž˜๊ฒจ์šด ๋‹ค์ด์–ดํŠธ ์‹œ๋„๋ฅผ ๋ณด๊ณ ๋งŒ ์žˆ๋˜ ์—”ํ† ํ”ผ์•„๋Š” ์„ฑ์›์ด์—๊ฒŒ ์ƒˆ๋กœ์šด ์ €์šธ์„ ์„ ๋ฌผํ•ด ์ฃผ์—ˆ๋‹ค. ์„ฑ์›์ด๋Š” ์—”ํ† ํ”ผ์•„๊ฐ€ย ์„ ๋ฌผํ•ด์ค€ ์ €์šธ ์œ„์— ์˜ฌ๋ผ๊ฐ”๋‹ค. โ€œ์•ˆ๋ผ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 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) ๋ผ๋Š” ์‹์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.


  1. ์šฐ์„  (ํ˜„์žฌ ๋ชธ๋ฌด๊ฒŒ**2 - ์˜ˆ์ „ ๋ชธ๋ฌด๊ฒŒ**2)๋ฅผ ์˜๋ฏธํ•˜๋Š” G๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š”๋‹ค. ์ด G๋ผ๋Š” ์ˆ˜๊ฐ€ ๋‘ ์ž์—ฐ์ˆ˜์˜ ๊ณฑ์œผ๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋กœ๋ถ€ํ„ฐ ํ˜„์žฌ ๋ชธ๋ฌด๊ฒŒ๋ฅผ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋‘ ์ž์—ฐ์ˆ˜์˜ ๊ณฑ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค๋ฉด, ์ด ๋‘ ์ž์—ฐ์ˆ˜๋ฅผ a, b๋ผ๊ณ  ํ•  ๋•Œ, ๋‘ ์ˆ˜๋Š” ๋ชจ๋‘ G ์˜ ์•ฝ์ˆ˜๊ฐ€ ๋œ๋‹ค. ๋•Œ๋ฌธ์— ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ๊ณต์‹์„ ํ™œ์šฉํ•œ๋‹ค. 1๋ถ€ํ„ฐ G์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€์˜ ๋ชจ๋“  ์ž์—ฐ์ˆ˜์— ๋Œ€ํ•ด G์— ๋‚˜๋ˆ„์–ด๋ณด์•˜์„ ๋•Œ, ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€๋ฉด ํ•ด๋‹นํ•˜๋Š” ์ˆ˜์™€ ๊ทธ ๋‚˜๋ˆ„์–ด์ง„ ๋ชซ์ด ๋ชจ๋‘ ์•ฝ์ˆ˜์ธ ๊ฒƒ์ด๋‹ค.
  3. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฅผ n1๊ณผ n2๋กœ ์ง€์ •ํ•˜๊ณ  ํ˜„์‹ค์ ์œผ๋กœ ๋ฐฐ์ œํ•˜๋Š” ์กฐ๊ฑด์„ ๋‘”๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋‘ ์ˆ˜๋Š” ๊ฐ๊ฐ ํ˜„์žฌ์™€ ๊ณผ๊ฑฐ์˜ ๋ชธ๋ฌด๊ฒŒ๋ฅผ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๋‘˜ ๋‹ค 0์ด ๋˜๋ฉด ์•ˆ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชธ๋ฌด๊ฒŒ๋Š” ๋” ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ n1๊ณผ n2๋Š” ๊ฐ™์œผ๋ฉด ์•ˆ๋œ๋‹ค.
  4. ์ด๋ฅผ ๋งŒ์กฑํ•œ๋‹ค๋ฉด (ํ˜„์žฌ ๋ชธ๋ฌด๊ฒŒ + ๊ณผ๊ฑฐ๋ชธ๋ฌด๊ฒŒ)*(ํ˜„์žฌ ๋ชธ๋ฌด๊ฒŒ - ๊ณผ๊ฑฐ๋ชธ๋ฌด๊ฒŒ)๊ฐ€ ๊ณง G๊ฐ€ ๋ ํ…๋ฐ, ์ด๊ฒƒ์ด ๊ฐ๊ฐ n2์™€ n1์ด ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ˜„์žฌ ๋ชธ๋ฌด๊ฒŒ๋Š” ๋‘ ์ˆ˜์˜ ํ•ฉ์„ 2๋กœ ๋‚˜๋ˆˆ (n1+n2)//2์ด ๋  ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์ด ์ž์—ฐ์ˆ˜์—ฌ์•ผ ํ•˜๋ฏ€๋กœ ํ•ฉ์ด ํ™€์ˆ˜๋ผ๋ฉด ์—ญ์‹œ ๋ฐฐ์ œํ•ด์ค€๋‹ค.
  5. ๋ชจ๋“  ๊ณผ์ •์„ ํ†ต๊ณผํ•œ ์ˆ˜๊ฐ€ ํ˜„์žฌ ๋ชธ๋ฌด๊ฒŒ์˜ ํ›„๋ณด๊ฐ€ ๋˜๋Š”๋ฐ, ๋ฐ˜๋ณต๋ฌธ์„ ์ง„ํ–‰ํ• ์ˆ˜๋ก n๊ณผ G//n์˜ ๊ฐ„๊ทน์€ ์ขํ˜€์ง€๋ฏ€๋กœ ๋จผ์ € ๋ฐœ๊ฒฌ๋˜๋Š” ๋ชธ๋ฌด๊ฒŒ ํ›„๋ณด์ผ์ˆ˜๋ก ๋” ํฌ๋‹ค. ๋•Œ๋ฌธ์— ๋ชจ๋“  ํ›„๋ณด๋“ค์„ ๋ชจ์€ ret ๋ฐฐ์—ด์„ ๋’ค์ง‘์–ด ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋งŒ์•ฝ ํ›„๋ณด๊ฐ€ ์—†์–ด ret์ด ์—†๋‹ค๋ฉด -1์„ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด [-1]์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  6. main ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์ด๋ฅผ ํ•œ ์ค„์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ