728x90
문제링크
https://www.acmicpc.net/problem/16435
문제
스네이크버드는 뱀과 새의 모습을 닮은 귀여운 생물체입니다.
스네이크버드의 주요 먹이는 과일이며 과일 하나를 먹으면 길이가 1만큼 늘어납니다.
과일들은 지상으로부터 일정 높이를 두고 떨어져 있으며 i (1 ≤ i ≤ N) 번째 과일의 높이는 hi입니다.
스네이크버드는 자신의 길이보다 작거나 같은 높이에 있는 과일들을 먹을 수 있습니다.
스네이크버드의 처음 길이가 L일때 과일들을 먹어 늘릴 수 있는 최대 길이를 구하세요.
조건
시간제한 : 1초
메모리 제한 : 128 MB
입력
첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000) 과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다.
두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다.
출력
첫 번째 줄에 스네이크버드의 최대 길이를 출력합니다.
문제정리
이번 문제의 경우 스네이크버드가 과일을 먹을 수 있을 때까지의 최대 길이를 구하는 문제입니다.
스네이크 버드는 자신의 길이보다 작거나 같은 높이의 과일을 먹을 수 있기 때문에
과일을 오름차순으로 정렬하여 제일 작은 것부터 먹도록 하였습니다.
만약 과일을 먹을 수 없다면 그 후 쭉 먹을 수 없다는 말이 되기 때문에 반복문을 종료하고 출력하였습니다.
C# 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
static void Main(string[] args)
{
// 16435 스네이크버드
StreamWriter writer = new StreamWriter(OpenStandardOutput());
StreamReader reader = new StreamReader(OpenStandardInput());
string[] input = reader.ReadLine().Split();
string[] input2 = reader.ReadLine().Split();
int N = int.Parse(input[0]);
int L = int.Parse(input[1]);
int[] H = new int[N];
for (int i = 0; i < N; i++)
H[i] = int.Parse(input2[i]);
// 자신의 길이보다 작거나 같은 높이 부터 먹기위에 오름차순으로 정렬
Array.Sort(H);
for (int i = 0; i < N; i++)
{
if (L >= H[i]) // 먹을 수 있는지 확인
L++;
else // 못먹으면 반복문 종료
break;
}
writer.WriteLine(L);
writer.Close();
reader.Close();
}
|
cs |
읽어주셔서 감사합니다 오늘도 즐거운 하루 되세요.
728x90
'[C#] 백준 (알고리즘) > 실버 문제' 카테고리의 다른 글
[백준 - C#] 11508번 2+1 세일 (0) | 2022.08.03 |
---|---|
[백준 - C#] 2828번 사과 담기 게임 (0) | 2022.08.02 |
[백준 - C#] 9237번 이장님 초대 (0) | 2022.08.01 |
[백준 - C#] 2847번 게임을 만든 동준이 (0) | 2022.07.31 |
[백준 - C#] 2217번 로프 (0) | 2022.07.27 |