티스토리 뷰

728x90

 

https://www.acmicpc.net/problem/9237

 

9237번: 이장님 초대

입력은 두 줄로 이루어져 있다. 첫째 줄에는 묘목의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄에는 각 나무가 다 자라는데 며칠이 걸리는지를 나타낸 ti가 주어진다. (1 ≤ ti ≤ 1,000,000)

www.acmicpc.net

 

일단 무조건 소요되는 시간으로 나무를 사고 다 자랄 때까지 걸리는 기간이 있습니다.

사는 날 1일 + 다 자란 날 1일 해서 최소 2일은 잡고 시작해야 하므로 cnt 값을 2일로 잡습니다.

 

그리고 최대한 빨리 일을 마치려면, 가장 오래 걸리는 작업을 가장 먼저 시작해서 끝내야 합니다.

그러기 위해선 입력 받은 값들을 역순으로 정렬한 뒤, 나무가 다 자랄 때까지 걸리는 시간과 기본 기간(cnt)을 더한 값이 최대치인 것을 찾으면 됩니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.*;
 
class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int cnt = 2;
        int res = 0;
        Integer arr[] = new Integer[N];
        for (int i = 0; i < N; i++) {
            arr[i] = sc.nextInt();
        }
        sc.close();
 
        Arrays.sort(arr, Collections.reverseOrder());
 
        for (int i = 0; i < N; i++) {
            res = Math.max(res, cnt + arr[i]);
            cnt++;
        }
 
        System.out.println(res);
    }
}
cs

 

'코딩 > 자바 백준' 카테고리의 다른 글

백준 11652 카드 (JAVA)  (0) 2021.08.30
백준 10816 숫자 카드 2 (JAVA)  (0) 2021.08.26
백준 1822 차집합(JAVA)  (0) 2021.08.25
백준 1789 수들의 합 (JAVA)  (0) 2021.08.24
백준 14425 문자열 집합(JAVA)  (0) 2021.08.24
댓글