https://www.acmicpc.net/board/view/78283
글 읽기 - 자바 시간초과 질문드립니다ㅠㅠ
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
https://www.acmicpc.net/board/view/77304
글 읽기 - 파이썬 시간초과가 뜨는 이유를 모르겠네요
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
https://www.acmicpc.net/board/view/76835
글 읽기 - 반례 부탁드리겠습니다.
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
https://st-lab.tistory.com/270
[백준] 2805번 : 나무 자르기 - JAVA [자바]
https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는..
st-lab.tistory.com
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] tree = new int[N];
st = new StringTokenizer(br.readLine(), " ");
int max = 0;
for(int i = 0; i < N; i++) {
tree[i] = Integer.parseInt(st.nextToken());
max = Math.max(max, tree[i]);
}
//Arrays.sort(tree); 정렬할 필요없음 최대값만 필요
int mid = tree[N-1] / 2;
int min = 0;
long result = 0;
while(true) {
long sum = 0;
for(int i = 0; i < N; i++) {
if(tree[i] > mid) {
sum += tree[i] - mid;
}
}
if(sum >= M) {
min = mid+1;
mid = (min + max) / 2;
}
else if(sum < M) {
max = mid-1;
mid = (min+max) / 2;
}
result = sum;
if(min > max) {
break;
}
}
System.out.println(mid);
}
}
'백준' 카테고리의 다른 글
[백준] 1927 최소 힙 [자바] (0) | 2022.01.03 |
---|---|
[백준] 2110 공유기 설치 [자바] (0) | 2021.12.31 |
[백준] 1931 회의실 배정 [자바] (0) | 2021.12.27 |
[백준] 11053 가장 긴 증가하는 부분 수열 [자바] (0) | 2021.12.24 |
[백준] 2156 포도주 시식[자바] (0) | 2021.12.23 |