문제는 입력으로 첫 번째 줄은 과일 갯수와 스네이크버드의 길이를 받은 후 두 번째 입력으로 과일의 값이 들어오게 되는데, 스네이크버드의 값이 과일 값보다 크거나 같으면 스네이크버드의 값이 1씩 증가하게 되고 최대한 과일을 많이 먹었을 경우의 스네이크버드의 값을 가져오면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Snakebird {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] split = br.readLine().split(" ");
int[] fruitArr = Arrays.stream(br.readLine().split(" "))
.mapToInt(Integer::parseInt).toArray();
Arrays.sort(fruitArr);
int snakeLength = Integer.parseInt(split[1]);
for(int i = 0; i<fruitArr.length; i++) {
if(snakeLength >= fruitArr[i]) {
snakeLength++;
}
}
System.out.println(snakeLength);
}
}
풀이방법은 과일의 값을 정렬해준 뒤 for 문을 돌리면서 스네이크버드보다 작거나 같으면 스네이크버드의 값을 +1 해 주는 식으로 진행해주면 작은 과일부터 계속 먹으면서 진행하다가 먹을 수 없게 되면 크기가 증가하지 않게 되고 for 문을 돌리고 난 후 스네이크버드의 값을 출력해주면 끝이다.
Leave a Reply