Java/Java 알고리즘

백준 16435번 스네이크버드 JAVA 구현해보기

kimc 2021. 12. 1. 00:32

```

백준 16435번 스네이크 버드 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1.  백준 16435 번 풀이

https://www.acmicpc.net/problem/16435

 

 

 

백준 16435번 스네이크버드는

난이도 브론즈 등급의 문제로서

 

뱀이 있을 때

자기 자신의 길이보다 작은 수의 정수만 먹을 수 있습니다.

정수를 하나 먹으면 길이가 1 증가합니다.

 

첫 줄에 뱀의 초기 길이, 과일의 개수

둘째 줄에 정수들이 주어질 때

 

뱀의 최대 길이를 구해주면 됩니다.


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


입력받은 수를 정렬해주고

해당되는 인덱스, 1 그리고 뱀의 길이만 더해주면 되는

간단한 문제였습니다.

 

이는 뱀이 먹은 숫자만큼 길이가 커지기 때문입니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
import java.util.stream.Collectors;

// https://www.acmicpc.net/problem/16435
public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        final int fruitNum = Integer.parseInt(st.nextToken());
        final int snakeLen = Integer.parseInt(st.nextToken());

        // 두번째 줄에서 입력을 받고
        // 입력받은 리스트를 오름차순으로 정렬해줍니다.
        List<Integer> teamRatingList = Arrays.stream(br.readLine().trim().split(" ")).map(Integer::parseInt).sorted().collect(Collectors.toList());

        // 해당되는 인덱스에 길이와 1을 더해서 출력해줍니다.
        // 길이보다 큰 값이 나오면 루프를 멈춥니다.
        int extraLen = 0;
        for (int i=0;i<fruitNum;i++){
            if((snakeLen + i) < teamRatingList.get(i)){
                break;
            }
            extraLen = i + 1;
        }

        System.out.println(extraLen + snakeLen);

    }


}

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 

참조 및 인용

 


 

728x90