๐Ÿงฉ Algorithm/SWEA

[SWEA] 16800. ๊ตฌ๊ตฌ๋‹จ ๊ฑท๊ธฐ (Python/D3)

devCloud 2024. 11. 14. 19:57
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com


ํ’€์ด ๋ฐฉ๋ฒ•

๐Ÿ’ก ์•ฝ์ˆ˜ ์ด์šฉํ•˜๊ธฐ

 

N ์ด 10 ์ผ ๊ฒฝ์šฐ ์ตœ์†Œ ์ด๋™ ๊ฒฝ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ ๊ณฑ์…ˆํ‘œ์ด๋‹ค. 

 

2์™€ 5๋Š” 10์˜ ์•ฝ์ˆ˜์™€ ๊ฐ™๋‹ค. ๋”ฐ๋ผ์„œ 10์˜ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๋‘ ์ˆ˜์˜ ๊ณฑ์˜ ์ฐจ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ i์™€ j ๋ฅผ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

 

(1, 1) ์—์„œ (2, 5) ๊นŒ์ง€ ๊ฐ€๋ ค๋ฉด, i๋Š” 2๊ฐ€ ๋˜์–ด์•ผ ํ•˜๊ณ , j๋Š” 5๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

  • i โžœ 2 - 1 = 1
  • j โžœ 5 - 1 = 4 

๋”ฐ๋ผ์„œ ๋‹ต์€ 1 + 4 = 5 ์ด๋‹ค.

Solution

T = int(input())  # ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜
for test_case in range(1, T + 1):
    N = int(input())

    # N ์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ
    min_num = N
    x, y = 0, 0
    for i in range(1, int(N**0.5) + 1):
        if N % i == 0:
            if (N // i) - i < min_num:  # ์•ฝ์ˆ˜์˜ ์ฐจ๊ฐ€ ์ œ์ผ ์ž‘์€ ๊ฑฐ
                x = i
                y = N // i

    result = (x - 1) + (y - 1)
    print(f"#{test_case} {result}")

 

 

๊ฐœ์„ ํ•  ๊ณณ

์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  ์ตœ์†Œ ์ฐจ์ด๋ฅผ ์ฐพ๋Š” ๋ถ€๋ถ„์—์„œ min_num ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š๊ณ , ๋‹จ์ˆœํžˆ (N // i) - i๊ฐ€ ์ตœ์†Œ์ผ ๋•Œ ๊ฐ’์„ ๋ฐ”๋กœ x์™€ y์— ํ• ๋‹นํ•˜๋„๋ก ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ min_num์€ ์ดˆ๊ธฐํ™”๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ œ๊ฑฐํ•ด๋„ ๋œ๋‹ค.

 

๊ฐœ์„ ๋œ ์ฝ”๋“œ

T = int(input())  # ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜
for test_case in range(1, T + 1):
    N = int(input())
    x, y = 1, N  # ์ดˆ๊ธฐ ๊ฐ’์„ 1๊ณผ N์œผ๋กœ ์„ค์ •

    for i in range(1, int(N**0.5) + 1):
        if N % i == 0:
            # ํ˜„์žฌ i์— ๋Œ€ํ•ด (N // i) - i๊ฐ€ ์ตœ์†Œ์ผ ๋•Œ x, y ์—…๋ฐ์ดํŠธ
            if (N // i) - i < y - x:
                x, y = i, N // i

    result = (x - 1) + (y - 1)
    print(f"#{test_case} {result}")

 


 

728x90