728x90
🔗 문제 링크
🔗 https://www.acmicpc.net/problem/16435
📌 문제 개요
스네이크버드는 자신의 길이보다 작거나 같은 높이의 과일만 먹을 수 있다.
과일을 먹을 때마다 길이는 1씩 증가한다.
주어진 과일들을 적절히 먹어 최대 길이를 구하는 문제
📌 접근 방법
- 과일을 아무 순서로 먹는 것이 아니라 작은 것부터 먹는 것이 핵심
- 큰 과일부터 먹으면 이후 작은 과일을 못 먹는 경우 발생
- 따라서: 오름차순 정렬 후 순차 탐색
📌 핵심 아이디어
- 현재 길이 >= 과일 높이 → 먹기 (길이 +1)
- 현재 길이 < 과일 높이 → 종료
한 번 막히면 뒤는 전부 불가능
📌 전체 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
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());
int N = Integer.parseInt(st.nextToken());
int L = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
StringTokenizer st1 = new StringTokenizer(br.readLine());
for(int i = 0; i < N; i++){
arr[i] = Integer.parseInt(st1.nextToken());
}
Arrays.sort(arr);
for(int i = 0; i < N; i++){
if(arr[i] <= L){
L++;
}else{
break;
}
}
System.out.println(L);
}
}
📄 정리
- 정렬 + 그리디 조합 문제
- 작은 것부터 먹는 전략이 핵심
- 구현 난이도는 낮지만 아이디어가 중요
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 백준 5800 성적 통계 JAVA 풀이 (정렬, 구현) (0) | 2026.04.06 |
|---|---|
| 백준 2828 사과 담기 게임 JAVA 풀이 (그리디, 구현) (0) | 2026.04.04 |
| 백준 1652 누울 자리를 찾아라 JAVA 풀이 (구현, 문자열, 완전탐색, 시간복잡도) (0) | 2026.04.02 |
| 백준 4659 비밀번호 발음하기 JAVA 풀이 (구현, 문자열, O(L)) (0) | 2026.04.01 |
| 백준 9625 BABBA JAVA 풀이 (DP, 피보나치, O(N)) (0) | 2026.03.31 |