
처음에 짠 코드
import sys
n, m = map(int, sys.stdin.readline().split())
arr = list(map(int, sys.stdin.readline().split()))
sorted_arr = sorted(arr)
end = sorted_arr[n-1] # 19
start = sorted_arr[0]
for i in range(end - 1, start, -1):
count = 0
for j in range(len(sorted_arr)):
if sorted_arr[j] - i >= 0:
count += sorted_arr[j] - i
if count == m:
break
print(i)
BS를 적용한 코드
n, m = list(map(int, input().split(' ')))
arr = list(map(int, input().split()))
end = max(arr) # 19
start = 0 # 10
result = 0
while start <= end:
count = 0
mid = (end + start) // 2
for i in arr:
if i > mid:
count += i - mid
if count < m:
end = mid - 1
else:
result = mid
start = mid + 1
print(result)
- 처음에 짠 코드는 밑도 끝도 없이 푼 느낌이라면 BS를 적용함으로서 확실히 수행 속도가 빨라지고, 체계적으로 문제를 풀어나갈 수 있었다.
'Programming > 1 Day 1 Commit' 카테고리의 다른 글
[이취코] 1로 만들기 (Python3) (0) | 2024.03.06 |
---|---|
[이취코] 정렬된 수열에서 특정 수의 개수 구하기 (Python) (0) | 2024.03.06 |
[BaekJoon] 바이러스 (Python3) (0) | 2024.02.17 |
[BaekJoon] 치킨치킨치킨 - 실버4 (Python3) (0) | 2024.02.16 |
[BaekJoon] 주유소 - 실버3 (Python3) (0) | 2024.02.15 |