๐Ÿค–/๋ฐฑ์ค€

๋ฐฑ์ค€ 1300: K๋ฒˆ์งธ ์ˆ˜ (Python)

sssbin 2022. 2. 23. 17:19

 

https://www.acmicpc.net/problem/1300

 

1300๋ฒˆ: K๋ฒˆ์งธ ์ˆ˜

์„ธ์ค€์ด๋Š” ํฌ๊ธฐ๊ฐ€ N×N์ธ ๋ฐฐ์—ด A๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ˆ˜ A[i][j] = i×j ์ด๋‹ค. ์ด ์ˆ˜๋ฅผ ์ผ์ฐจ์› ๋ฐฐ์—ด B์— ๋„ฃ์œผ๋ฉด B์˜ ํฌ๊ธฐ๋Š” N×N์ด ๋œ๋‹ค. B๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ–ˆ์„ ๋•Œ, B[k]๋ฅผ ๊ตฌํ•ด๋ณด์ž. ๋ฐฐ์—ด A์™€ B

www.acmicpc.net

 

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด๋Š” ์‰ฌ์šฐ๋‚˜ ๋ฌธ์ œ ํ’€์ด๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ณผ์ •์ด ๋„ˆ๋ฌด ์–ด๋ ค์› ๋‹ค

๊ทธ๋ž˜์„œ ์ผ์ฃผ์ผ ์ „ ์ฏค์— ํ’€๋‹ค๊ฐ€ ๊ทธ ์ƒํƒœ๋กœ ๋ฐฉ์น˜ํ•˜๊ณ  ์˜ค๋Š˜ ๋‹ค์‹œ ํ•จ..ใ…‹ใ…‹ใ…‹

2์ฐจ์› ๋ฐฐ์—ด -> 1์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ฐ”๊พธ๋Š” ๋น„ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•๋ฐ–์— ์ƒ๊ฐ์ด ๋‚˜์งˆ ์•Š์•„์„œ

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ํ’€์ด ์ฐธ๊ณ ํ•ด์„œ ํ’€์—ˆ๋Š”๋ฐ ๊ทธ๋งˆ์ €๋„ ์ดํ•ด๊ฐ€ ์•ˆ ๊ฐ€์„œ ์˜ค๋žซ๋™์•ˆ ๋™๋™ ์•“์•˜๋‹คใ… 

 

n = int(input())
k = int(input())

start = 1
end = k

while start <= end:
    mid = (start + end) // 2
    cnt = 0

    for i in range(1, n+1):
        cnt += min(mid//i, n)

    if cnt >= k:
        end = mid - 1
    else:
        start = mid + 1

print(start)

 

 

k๋ฒˆ์งธ ์ˆ˜๋ฅผ ์ฐพ์œผ๋ ค๋ฉด k๋ณด๋‹ค ์ž‘์€ ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ ์ฐพ์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๊ณ 

์ง์ ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋”ฐ๋ผ ํ’€์–ด๋ณด๋ฉด(^^....) ์ดํ•ด๊ฐ€ ๋œ๋‹ค.