반응형
https://www.acmicpc.net/problem/16435
greedy로 푼 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
처음 스네이크버드의 길이 snakeBirdLength, 과일 개수 n, n개의 과일 높이 정보를 저장할 vector fruitHeight를 선언 한 후 적절히 입력받습니다.
📔 풀이과정
새가 제일 길어지려면 과일을 최대한 많이 먹어야 합니다. 이를 위해 과일 높이를 오름차순으로 정렬을 해줘야 합니다. 현 자신의 높이 이하의 과일을 최대한 많이 먹어야 새 높이보다 높이 있는 과일도 먹을 수 있기 때문입니다
정렬 후 for loop를 수행하며 자신보다 낮은 높이의 과일을 먹으며 길이를 늘립니다.
📔 정답출력
snakeBirdLength를 출력합니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int snakeBirdLength, n;
vector <int> fruitHeight;
int main(){
cin >> n >> snakeBirdLength;
fruitHeight.resize(n);
for(int i = 0; i < n; i++) cin >> fruitHeight[i];
sort(fruitHeight.begin(), fruitHeight.end());
for(auto f : fruitHeight){
if(snakeBirdLength >= f) {
snakeBirdLength++;
}
}
cout << snakeBirdLength;
}
'Algorithm > Greedy' 카테고리의 다른 글
(C++) - 백준(BOJ) 16208 : 귀찮음 (0) | 2022.05.04 |
---|---|
(C++) - 백준(BOJ) 13416 : 주식투자 (0) | 2022.04.06 |
(C++) - 백준(BOJ) 9237 : 이장님 초대 (0) | 2022.03.29 |
(C++) - 백준(BOJ) 1388 : 바닥 장식 (0) | 2021.10.05 |
(C++) - leetcode 2007번 : Find Original Array From Doubled Array (0) | 2021.09.29 |