728x90
반응형
https://www.acmicpc.net/problem/2805
2805번: 나무 자르기
첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보
www.acmicpc.net
code
#나무 자르기
import sys
input = sys.stdin.readline
n, m = map(int,input().split())
tree = list(map(int,input().split()))
start = 1
last = max(tree)
while start <= last:
mid = (start+last) //2
count = 0
for i in tree:
if i > mid:
count += (i - mid)
if count >= m:
start = mid+1
else:
last = mid-1
print(last)
이번 문제에서 어떤 방식으로 탐색해나갈지 고민을 조금 했던 것 같다.
처음에 바로 이분탐색을 떠올리지 못하고 고민하다 이분탐색을 생각하고는 바로 풀었다.
다만 처음엔 시간초과가 떴다.
코드의 다른점은
count += i - mid
count = count+ (i-mid)
위 코드를 아래처럼 썼었는데 아래같은 경우에는 시간초과가 떴다.
아직 왜그런지 이유는 모르지만 한번 공부해야될 것 같다.
알고리즘 문제를 풀때 시간초과가 난다면 이런부분도 확인해 봐야겠다.
728x90
반응형
'알고리즘 > 백준[baekjoon]' 카테고리의 다른 글
[baekjoon] 백준 10773번 : 제로 (by python 파이썬) (0) | 2022.04.07 |
---|---|
[baekjoon] 백준 4949번 : 균형잡힌 세상 (by python 파이썬) (0) | 2022.04.06 |
[baekjoon] 백준 1874번 : 스택 수열 (by python 파이썬) (0) | 2022.04.05 |
[baekjoon] 백준 1966번 : 프린터 큐 (by python 파이썬) (0) | 2022.04.03 |
[baekjoon]백준 1654번 : 랜선 자르기 (by python 파이썬) 이분탐색 (0) | 2022.03.30 |