백준

백준 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);

  }
}