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

 

9237번: 이장님 초대

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

www.acmicpc.net

 

 

일단 첫 번째 시도를 실패했는데 

문제를 잘못 읽었다.

나무 심는 순서를 신중하게 골라서 최대한 빨리 초대하려고 한다

 

심는 순서를 내가 정하는 것이었다!!!

차례대로인 줄

문제를 잘 읽자.

 

먼저, 최대한 빨리 초대하려고 하니깐,

정렬을 했다.

 

정렬하고 나서 묘묙 하나를 심는데 걸리는 시간이 1일 걸린다고 했다.

그러니 심는데 시간이 1일이 걸린다고 먼저 더하고 시작해야 하는 것이다. 

 

 

정리해보자면, 

만약 묘목 자라는데 걸리는 시간이 5 9 8 2라고 하자.

정렬하면

2 5 8 9이다. 

그럼 빨리 초대하려고 하니깐. 

그럼 묘목 자라는데 걸리는 시간이 9일 걸리는 묘목부터 심어야 한다.

 

그런데 묘목 심는데 걸리는 시간이 1일이니깐,

9일 걸리는 묘목을 심는 데는 1+9일이 걸리고 

이장님을 초대하는데 다음날 초대하니깐 

결과는 9 +2일이 걸리는 것이다.

 

이렇게 더하면

2 5 8 9 묘목은

+ 5 4 3 2

 7 9 11 11일 걸린다. 

 

그럼 최댓값은 11일.

최대 11일이 걸린다. 

 

소스코드는 

#include <iostream>
#include <algorithm>
using namespace std;


int main() {
	int count;
	int max_num = 0;
	int input[100001];
	cin >> count;

	for (int i = 0,num; i < count; i++) {
		cin >> input[i];
	}
	sort(input, input + count);

	for (int i = count - 1,add =2; i >= 0; i--) {
		max_num = max(input[i] + add, max_num);
		add++;
	}
	cout << max_num;
	return 0;
}

+ Recent posts