티스토리 뷰

문제. 

스네이크 버드는 뱀과 새의 모습을 닮은 귀여운 생물체입니다. 스네이크 버드의 주요 먹이는 과일이며 과일 하나를 먹으면 길이가 1만큼 늘어납니다. 과일들은 지상으로부터 일정 높이를 두고 떨어져 있으며 i (1 ≤ i ≤ N) 번째 과일의 높이는 hi입니다. 스네이크 버드는 자신의 길이보다 작거나 같은 높이에 있는 과일들을 먹을 수 있습니다. 

 

스네이크 버드의 처음 길이가 L일 때 과일들을 먹어 늘릴 수 있는 최대 길이를 구하세요.

 

입출력.

첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000)과 스네이크 버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다. 두 번째 줄에는 정수 h1, h2,..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다. 스네이크 버드의 최대길이를 출력합니다.

 

방법.

문제에 풀이 방법이 모두 나와있어서 고민할 거리가 없었다. 입력받은 과일의 위치가 정렬되어 있지 않으니 먼저 입력받은 값을 오름차순으로 정리하고, 스네이크 버드보다 낮은 위치에 있는 과일을 먹어 키를 키우되 키보다 큰 위치에 있는 과일과 만나면 그 이후의 반복은 의미가 없으므로 break문을 사용해 반복에서 빠져나와 최종 키를 출력했다.

#include <stdio.h>

void sort(int size, int *arr); //정렬

int main(void){
    //입력
    int size, h;
    scanf("%d %d", &size, &h);
    int arr[size];
    for(int i=0; i<size; i++){
        scanf("%d", &arr[i]);
    }

    //정렬
    sort(size, arr);

    //과일 먹고 키크기
    for(int i=0; i<size; i++){
        if(h>=arr[i]){
            h++;
        }else{
            break;
        }
    }
    
    //출력
    printf("%d",h);
    return 0;
}

void sort(int size, int *arr){
    int temp;
    for(int i=0; i<size-1; i++){
        for(int j=i; j<size; j++){
            if(arr[i]>=arr[j]){
                temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
    }
}

 

Insight.

1일 1 커밋은 놓치고 싶지 않고 너무 졸려서 그리디 알고리즘 문제 중 간단한 문제를 골랐다. 이건 22일 월요일에 푼 거로 하고, 오늘 그러니까 화요일부터는 꼭 자정 전에 커밋해야겠다. 날짜도 헷갈리고 피곤하다.

 

 

 

 

 

 

 

16435번: 스네이크버드

첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000) 과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다. 두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다.

www.acmicpc.net

'Computer Science > 백준 알고리즘' 카테고리의 다른 글

[백준.08958-C언어] OX퀴즈  (0) 2021.02.24
[백준.11508-C언어] 2+1 세일  (0) 2021.02.23
[백준.11399-C언어] ATM  (0) 2021.02.22
[백준.11047-C언어] 동전 0  (0) 2021.02.21
[백준.00000] 1일 1sol  (0) 2021.02.21
댓글
«   2025/05   »
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
최근에 올라온 글
글 보관함
Total
Today
Yesterday