Level: Level 1
풀이: 미참고
Language: C++
프로그램: Visual Studio 2017
문제설명
스네이크버드는 뱀과 새의 모습을 닮은 귀여운 생물체입니다.
스네이크버드의 주요 먹이는 과일이며 과일 하나를 먹으면 길이가 1만큼 늘어납니다.
과일들은 지상으로부터 일정 높이를 두고 떨어져 있으며 i (1 ≤ i ≤ N) 번째 과일의 높이는 hi입니다.
스네이크버드는 자신의 길이보다 작거나 같은 높이에 있는 과일들을 먹을 수 있습니다.
스네이크버드의 처음 길이가 L일 때 과일들을 먹어 늘릴 수 있는 최대 길이를 구하세요.
입력/출력
입력
첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000)과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다.
두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다.
입력 예
3 10 |
출력
첫 번째 줄에 스네이크버드의 최대 길이를 출력합니다.
출력 예
스네이크버드의 처음 길이는 10이며 1번 과일을 먹은 후 길이가 11이 됩니다. 이후 2번 과일을 먹으면 길이가 12가 됩니다. 더 이상 먹을 수 있는 과일이 없으므로 최대 길이는 12가 됩니다.
12
풀이
과일의 개수 n, 스네이크버드의 초기길이를 L로 설정하였다.
과일의 높이를 담는 배열은 h이다.
반복문을 돌면서 스네이크버드의 길이보다 작거나 같은 과일일 경우, 초기 길이에서 1만큼 증가시킨다.
다 탐색을 했을 때, 길이가 변하지 않는다면 반복문을 끝낸다(Break).
Code
#include <iostream>
using namespace std;
int main(){
int h[1001];//과일의 높이를 담는 배열
int n = 0; //과일의 개수
int L = 0; //스네이크버드의 초기길이
cin >> n >> L;
int L2 = L;
for (int i = 1; i <= n; ++i) {
cin >> h[i];
}
while (true) {
for (int i = 1; i <= n; ++i) {
if (L >= h[i]){
h[i] = 10000000; //확인된 값에 의미없는 값 넣기
L++;
}
}
//다 탐색했을 때, 길이가 변하지 않는다면 반복문을 끝낸다.
if (L == L2) break;
L2 = L;
}
cout << L;
}
ScreenShot
'Programming > Programming 풀이' 카테고리의 다른 글
[Baekjoon] 14659번 한조서열정리하고옴ㅋㅋ(C++) (455) | 2021.01.19 |
---|---|
[Baekjoon] 11497번 통나무 건너뛰기(C++) (408) | 2021.01.18 |
[Baekjoon] 1389번 케빈 베이컨의 6단계 법칙(C++) (290) | 2021.01.14 |
[Baekjoon] 10026번 적록색약(C++) (443) | 2021.01.12 |
[Algorithm] BFS(너비우선탐색)와 DFS(깊이우선탐색) (296) | 2021.01.12 |