코드
import sys
input = sys.stdin.readline
zoka, snack_num = map(int, input().split())
snack = list(map(int, input().split()))
start, end = 1, max(snack)
result = 0
while start <= end:
snack_cnt = 0
mid = (start + end) // 2
for i in snack:
snack_cnt += i//mid
if snack_cnt >= zoka:
result = mid
start = mid + 1
else: end = mid - 1
print(result)
최적화 문제를 결정문제로 바꾸는 파라메트릭 서치 유형. 쉽게 풀 줄 알았는데 좀 헤맸다. 과자의 길이는 (1 ≤ L1, L2, ..., LN ≤ 1,000,000,000) 이 조건인데 이걸 오름차순 조건으로 잘못봐서 범위를 잘못줬기 때문이다. 그래서 max로 풀고도 계속 잡고 있었다. 문제 잘 읽자... 근데 아깐 분명 괄호가 있었는데
'백준' 카테고리의 다른 글
[백준] 20944번 팰린드롬 척화비 파이썬 코드 (0) | 2023.09.12 |
---|---|
[백준] 13706번 제곱근 파이썬 코드 (0) | 2023.09.11 |
[백준] 11561번 징검다리 파이썬 코드 (0) | 2023.09.11 |
[백준] 2417번 정수 제곱근 파이썬 코드 (0) | 2023.09.10 |
[백준] 7795번 먹을 것인가 먹힐 것인가 파이썬 코드 (0) | 2023.09.08 |
코드
import sys
input = sys.stdin.readline
zoka, snack_num = map(int, input().split())
snack = list(map(int, input().split()))
start, end = 1, max(snack)
result = 0
while start <= end:
snack_cnt = 0
mid = (start + end) // 2
for i in snack:
snack_cnt += i//mid
if snack_cnt >= zoka:
result = mid
start = mid + 1
else: end = mid - 1
print(result)
최적화 문제를 결정문제로 바꾸는 파라메트릭 서치 유형. 쉽게 풀 줄 알았는데 좀 헤맸다. 과자의 길이는 (1 ≤ L1, L2, ..., LN ≤ 1,000,000,000) 이 조건인데 이걸 오름차순 조건으로 잘못봐서 범위를 잘못줬기 때문이다. 그래서 max로 풀고도 계속 잡고 있었다. 문제 잘 읽자... 근데 아깐 분명 괄호가 있었는데
'백준' 카테고리의 다른 글
[백준] 20944번 팰린드롬 척화비 파이썬 코드 (0) | 2023.09.12 |
---|---|
[백준] 13706번 제곱근 파이썬 코드 (0) | 2023.09.11 |
[백준] 11561번 징검다리 파이썬 코드 (0) | 2023.09.11 |
[백준] 2417번 정수 제곱근 파이썬 코드 (0) | 2023.09.10 |
[백준] 7795번 먹을 것인가 먹힐 것인가 파이썬 코드 (0) | 2023.09.08 |