반응형
https://www.acmicpc.net/problem/9237
greedy문제였습니다.
📕 풀이방법
📔 입력 및 초기화
묘목의 수 n, 이장님 만나는 날 meetDay, 묘목 자라는데 걸리는 시간을 저장할 vector형 변수 growDay를 선언 후 적절히 입력해줍니다.
📔 풀이과정
자라는데 오래걸리는 묘목은 최대한 빨리 심어야 합니다. 따라서 growDay를 내림차순으로 정렬해줍니다.1. growDay에 대해 for loop를 수행합니다. 매 loop를 수행할 때마다 하루가 지난것으로 생각할 수 있습니다. 2. 따라서 묘목이 다 자라려면 growDay[i] + i + 1만큼의 시간이 필요합니다(i는 0부터 시작하기 때문에). 이 값의 최댓값이 묘목이 다 자라려면 필요한 시간입니다.
📔 정답출력
반드시 묘목이 다 자란뒤에 만날 수 있으므로 meetDay + 1을 출력합니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int n, meetDay;
vector<int> growDay;
int main(){
cin >> n;
growDay.resize(n);
for(int i = 0; i < n; i++) cin >> growDay[i];
sort(growDay.rbegin(), growDay.rend());
for(int i = 0; i < growDay.size(); i++)
meetDay = max(meetDay, growDay[i] + i + 1);
cout << meetDay + 1;
}
'Algorithm > Greedy' 카테고리의 다른 글
(C++) - 백준(BOJ) 13416 : 주식투자 (0) | 2022.04.06 |
---|---|
(C++) - 백준(BOJ) 16435 : 스네이크버드 (0) | 2022.03.31 |
(C++) - 백준(BOJ) 1388 : 바닥 장식 (0) | 2021.10.05 |
(C++) - leetcode 2007번 : Find Original Array From Doubled Array (0) | 2021.09.29 |
(C++) - 백준(BOJ) 17521번 : Byte Coin (0) | 2021.09.25 |