2417. ์ •์ˆ˜ ์ œ๊ณฑ๊ทผ (silver 4)

์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ๊ทธ ์ˆ˜์˜ ์ •์ˆ˜ ์ œ๊ณฑ๊ทผ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค. (0 ≤ n < 263)

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— q^2 ≥ n์ธ ๊ฐ€์žฅ ์ž‘์€ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜ q๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1

122333444455555

 

 

์˜ˆ์ œ ์ถœ๋ ฅ1

11060446

 

 

 

ํ’€์ด)

์ด๋ถ„ ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

์‹œ์ž‘์ ์— ํ•ด๋‹นํ•˜๋Š” start๋Š” 0, ๋์ ์— ํ•ด๋‹นํ•˜๋Š” end๋Š” ์ž…๋ ฅ๊ฐ’์ธ n์œผ๋กœ ์ €์žฅํ•ด์ฃผ์—ˆ๋‹ค.

while๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ mid๊ฐ’์„ ์‹œ์ž‘๊ฐ’๊ณผ ๋๊ฐ’์˜ ์ค‘๊ฐ„ ๊ฐ’์œผ๋กœ ์ €์žฅํ•ด์ฃผ์—ˆ๊ณ , if๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์ค‘๊ฐ„๊ฐ’์˜ ์ œ๊ณฑ๊ฐ’์ด n ๋ฏธ๋งŒ์ด๋ฉด ์‹œ์ž‘์ ์„ ์ค‘๊ฐ„๊ฐ’๋ณด๋‹ค 1ํฌ๊ฒŒ ์ €์žฅํ•ด์„œ ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜๋„๋ก ํ–ˆ๊ณ , ์ค‘๊ฐ„๊ฐ’์˜ ์ œ๊ณฑ๊ฐ’์ด n์ด์ƒ์ด๋ฉด ๋์ ์„ ์ค‘๊ฐ„๊ฐ’๋ณด๋‹ค 1 ์ž‘๊ฒŒ ์ €์žฅํ•ด์ฃผ์—ˆ๋‹ค,

n = int(input())

start = 0
end = n

while start <= end:
    mid = (start + end) // 2
    if mid ** 2 < n:
        start = mid + 1
    else:
        end = mid - 1

print(end+1)
๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!