-
백준 16435번 : 스네이크버드 (C 언어)c c++ 언어 공부 2023. 9. 4. 11:07
https://www.acmicpc.net/problem/16435
16435번: 스네이크버드
첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000) 과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다. 두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다.
www.acmicpc.net
Code:
1234567891011121314151617181920212223242526272829303132333435#include <stdio.h>#include <stdlib.h>int compare(const void* a, const void* b){if (*(int*)a > *(int*)b)return 1;else if (*(int*)a < *(int*)b)return -1;else return 0;}int main() {int n;int l;scanf("%d %d", &n, &l);int h[10000] = { 0, };int num = 0;for (int i = 0; i < n; i++){scanf("%d", &h[i]);}qsort(h, n, sizeof(int), compare);while (1){if (l >= h[num] && num < n){l++;num++;}else{break;}}printf("%d", l);}cs 문제 설명:
이 문제는 스네이크버드가 주어진 초기 길이와 높이에 따라 얼마나 길어질 수 있는지를 계산하는 문제입니다. 스네이크버드는 과일을 먹어서 길어지며, 과일은 일정 높이에 떨어져 있습니다.
입력:
- 첫 번째 줄에는 과일의 개수 N과 스네이크버드의 초기 길이 L이 주어집니다. (1 ≤ N ≤ 1,000, 1 ≤ L ≤ 10,000)
- 두 번째 줄에는 정수 h1, h2, ..., hN이 주어집니다. 각 과일의 높이를 나타냅니다. (1 ≤ hi ≤ 10,000)
출력:
- 스네이크버드가 먹을 수 있는 최대 길이를 출력합니다.
코드 설명:
- 필요한 라이브러리를 불러옵니다.
- 정렬을 위한 비교 함수 compare를 정의합니다.
- 과일의 개수 n과 초기 길이 l을 입력 받습니다.
- 과일의 높이를 입력받고, qsort 함수를 사용하여 과일을 높이 순으로 정렬합니다.
- 스네이크버드의 길이를 늘리기 위한 루프를 실행합니다. 스네이크버드의 길이 l이 과일의 높이 h[num]보다 크거나 같고, 아직 처리하지 않은 과일이 있다면 길이를 늘리고 과일을 먹습니다.
- 더 이상 과일을 먹을 수 없거나 과일을 모두 먹었을 때, 스네이크버드의 최대 길이를 출력합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 16395번 : 파스칼의 삼각형 (C 언어) (0) 2023.09.05 백준 14490번 : 백대열(C 언어) (0) 2023.09.05 백준 1526번 : 가장 큰 금민수 (C 언어) (0) 2023.09.04 백준 1264번 : 모음의 개수 (C 언어) (0) 2023.09.01 백준 1547번 : 공 (C 언어) (0) 2023.09.01