ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오

[백준] 3985번 롤케이크

SZCODE 2020. 4. 1. 01:01

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

 

3985번: 롤 케이크

문제 인기 티비 프로그램 "나는 요리사 인가?"의 새 시즌이 시작한다. 이번 시즌은 기네스북에 등재될 만한 음식을 만드는 것을 목표로 진행한다. 첫 번째 에피소드에 출연하는 요리사는 전설의 요리사 김상근이고, 길이 L미터의 롤 케이크를 만들 것이다. 상근은 몇 시간동안 집중해서 케이크를 만들었고, 이제 스튜디오의 방청객 N명에게 케이크를 나누어 주려고 한다. 상근이는 롤 케이크를 펼쳐서 1미터 단위로 잘라 놓았다. 가장 왼쪽 조각이 1번, 오른쪽 조각이

www.acmicpc.net

목표: 가장 많은 케이크 조각을 받을 것으로 기대한 방청객의 번호와 실제로 가장 많은 케이크 조각을 받는 방청객의 번호를 구하기
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int L = sc.nextInt();// 롤케이크 길이
		int N = sc.nextInt();// 방청객의 수
		int answer = 0;// 방청객 번호

		int[][] arr = new int[N][2];

		for (int i = 0; i < N; i++) {
			arr[i][0] = sc.nextInt();
			arr[i][1] = sc.nextInt();
		}

		int[] lol = new int[L+1];
		int max = 0;
		for (int i = 0; i < N; i++) {// 가장 많은 조각을 받도록 예상되는 방척객

			if (max < arr[i][1] - arr[i][0]) {
				max = arr[i][1] - arr[i][0];
				answer = i + 1;
			}

		}
		System.out.println(answer);

		// 실제로 가장 많은 조각을 받은 방청객 번호출력

		for (int i = 1; i <= N; i++) {
			for (int k = arr[i - 1][0]; k <= arr[i - 1][1]; k++) {
				if (lol[k] == 0) {
					lol[k] = i;
				}

			}
		}
		// for (int i = 0; i < lol.length; i++) {
		// System.out.print(lol[i]+" ");
		// }
		max = 0;
		for (int i = 1; i <= N; i++) {
			
			int count = 0;

			for (int j = 0; j < lol.length; j++) {
				if (lol[j] == i) {
					count++;
				}
			}
			if (count > max) {
				max = count;
				answer = i;
			}
		}
		System.out.println(answer);

	}// eom

}