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๋ณด๋ค ์์ ์๊ฐ ๋ช ๊ฐ์ธ์ง ์ฐพ์์ผ ํ๋ค๋ ๊ฒ์ ์ดํดํ๊ณ
์ง์ ์๊ณ ๋ฆฌ์ฆ ๋ฐ๋ผ ํ์ด๋ณด๋ฉด(^^....) ์ดํด๊ฐ ๋๋ค.
'๐ค > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 1904: 01ํ์ผ (Python) (0) | 2022.03.29 |
---|---|
๋ฐฑ์ค 1003: ํผ๋ณด๋์น ํจ์ (Python) (0) | 2022.03.29 |
๋ฐฑ์ค 2110: ๊ณต์ ๊ธฐ ์ค์น (Python) (0) | 2022.02.14 |
๋ฐฑ์ค 2805: ๋๋ฌด ์๋ฅด๊ธฐ (Python) (0) | 2022.02.12 |
๋ฐฑ์ค 1654: ๋์ ์๋ฅด๊ธฐ (Python) (0) | 2022.02.11 |