백준
백준 3985 롤 케이크(Java)
Park DJ
2023. 1. 19. 00:19
https://www.acmicpc.net/problem/3985
3985번: 롤 케이크
첫째 줄에 롤 케이크의 길이 L (1 ≤ L ≤ 1000)이 주어진다. 둘째 줄에는 방청객의 수 N (1 ≤ N ≤ 1000)이 주어진다. 다음 N개 줄에는 각 방청객 i가 종이에 적어낸 수 Pi와 Ki가 주어진다. (1 ≤ Pi ≤ Ki
www.acmicpc.net
해석 및 팁
이 문제는 처음에 입력되는 값들 중 가장 큰 값과 실제 적용했을 때 나오는 가장 큰 값을 찾아 출력하면 됩니다. 먼저 기대하는 최댓값을 찾기 위해서는 주어지는 p와 k의 차가 가장 큰 것을 찾으면 됩니다. 또한 실제 최댓값은 먼저 입력받은 범위만큼 1로 나타내어 케이크의 유무를 판단하고 count++을 통해 몇 조각 가져갔는지 확인합니다. 그 후 count값 중 최대일 때를 찾아 출력하면 됩니다.
Java 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int l = sc.nextInt();
int n = sc.nextInt();
int max_1 = -1;
int max_2 = -1;
int first = 0;
int sec = 0;
int[] arr = new int[l];
for(int i = 0; i < n; i++) {
int count = 0;
int p = sc.nextInt();
int k = sc.nextInt();
if(k - p > max_1) {
max_1 = k - p; //기대 최대값 찾기
first = i + 1;
}
for(int j = p-1; j < k; j++) {
if(arr[j] == 0) {
arr[j] = 1;
count++;
}
}
if(count > max_2) {
max_2 = count; //실제 최대값 찾기
sec = i + 1;
}
}
System.out.println(first);
System.out.println(sec);
}
}