Coding - Algo/Java
[백준] 3985번:롤 케이크 (Java 자바)
jainn
2021. 8. 30. 09:34
728x90
문제
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
풀이 및 소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int real_n = 0; //진짜로 많이 받는 방청객의 번호
int real_cnt = 0; //진짜로 많이 받는 방청객의 조각 개수
int fake_n = 0; //많이 받을 것이라고 예상되는 방청객의 번호
int fake_cnt = 0; //예상되는 조각개수
int l = Integer.parseInt(br.readLine());
//롤케이크의 길이
int n = Integer.parseInt(br.readLine());
//방청객의 수
int[] roll = new int[l];
for(int i=1;i<=n;i++) {
st = new StringTokenizer(br.readLine());
int p = Integer.parseInt(st.nextToken())-1;
int k = Integer.parseInt(st.nextToken())-1;
if(fake_cnt<(k-p)) {
fake_cnt = k-p;
fake_n = i;
}
//가장 많은 조각을 받도록 예상되는 방청객
int cnt = 0;
for(int j=p;j<=k;j++) {
if(roll[j]==0) {
roll[j]=i;
cnt++;
}
}
if(cnt>real_cnt) {
real_n = i;
real_cnt = cnt;
}
}
System.out.println(fake_n);
System.out.println(real_n);
}
}
반응형