728x90
728x90
반응형
8980번: 택배
입력의 첫 줄은 마을 수 N과 트럭의 용량 C가 빈칸을 사이에 두고 주어진다. N은 2이상 2,000이하 정수이고, C는 1이상 10,000이하 정수이다. 다음 줄에, 보내는 박스 정보의 개수 M이 주어진다. M은 1이
www.acmicpc.net
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package 그리디; | |
import java.io.BufferedReader; | |
import java.io.InputStreamReader; | |
import java.util.Arrays; | |
import java.util.StringTokenizer; | |
public class boj8980 { | |
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
static int answer = 0; | |
static int N,C, M; | |
static class truck implements Comparable<truck>{ | |
int cur,next,size; | |
public truck(int cur, int next, int size) { | |
this.cur = cur; | |
this.next = next; | |
this.size = size; | |
} | |
@Override | |
public int compareTo(truck other) { | |
if(next == other.next){ | |
return cur - other.cur; | |
} | |
return next - other.next; | |
} | |
} | |
public static void main(String[] args) throws Exception { | |
StringTokenizer st = new StringTokenizer(br.readLine()); | |
N = Integer.parseInt(st.nextToken()); | |
C = Integer.parseInt(st.nextToken()); | |
M = Integer.parseInt(br.readLine()); | |
truck[] trucks = new truck[M]; | |
for(int i = 0 ; i< M ; i++){ | |
st = new StringTokenizer(br.readLine()); | |
trucks[i] = new truck(Integer.parseInt(st.nextToken()), | |
Integer.parseInt(st.nextToken()) | |
,Integer.parseInt(st.nextToken())); | |
} | |
Arrays.sort(trucks,0,M); | |
int [] boxs = new int[N+1]; | |
for(int i=1; i< boxs.length; i++){ | |
boxs[i] = C; | |
} | |
for(int i=0; i < M ; i++){ | |
truck t = trucks[i]; | |
int maxC = Integer.MAX_VALUE; | |
for(int j= t.cur; j < t.next; j ++){ | |
maxC = Math.min(maxC,boxs[j]); | |
} | |
if(maxC >= t.size){ | |
for(int j=t.cur; j< t.next; j++){ | |
boxs[j] -= t.size; | |
} | |
answer += t.size; | |
}else{ | |
for(int j=t.cur; j< t.next; j++){ | |
boxs[j] -= maxC; | |
} | |
answer += maxC; | |
} | |
} | |
System.out.println(answer); | |
} | |
} |
728x90
728x90
'Language > JAVA' 카테고리의 다른 글
[JAVA][백준 11657][벨만포드] 타임머신 - 컴도리돌이 (0) | 2022.08.18 |
---|---|
[JAVA][백준 1092][Greedy, Sort] 배 - 컴도리돌이 (0) | 2022.08.17 |
[JAVA][백준 17845][배낭문제] 수강 과목 - 컴도리돌이 (0) | 2022.08.02 |
[JAVA][백준 12015][이분 탐색] 가장 긴 증가하는 부분 수열2 - 컴도리돌이 (0) | 2022.07.30 |
[Java][백준 2470][투 포인터] 두 용액 - 컴도리돌이 (0) | 2022.07.29 |