삐까냥의 파도타기
1860. 진기의 최고급 붕어빵 본문
이 문제가 D3(어려움)인데, 정답률이 왜 40%인지 모르겠네요.
(다른 D3문제의 정답률 40% 이하인 문제보다 훨씬 쉬운 느낌이에요.)
고객은 붕어빵 하나씩만 구매할 수 있네요.
package sw; import java.util.Collections; import java.util.LinkedList; import java.util.Scanner; public class Q1860 { static int N, M, K; static LinkedList<Integer> peoples; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int max = sc.nextInt();
for ( int i = 1; i <= max; i++ ) { N = sc.nextInt(); //사람 수 M = sc.nextInt(); //붕어빵 만드는 쿨타임 K = sc.nextInt(); //붕어빨 만드는 개수 peoples = new LinkedList<Integer>(); //사람 목록 for ( int j = 0; j < N; j++ ) { peoples.add(sc.nextInt()); } Collections.sort(peoples); //도착 순서에 따른 정렬 System.out.println("#" + i + " " + getResult()); } }
public static String getResult() { int nowTime = 0, finishBbangNum = 0; while ( !peoples.isEmpty() ) { //예약한 사람이 모두 올때 까지 반복 while( peoples.getFirst() < nowTime + M ) { //다음 붕어빵 쿨타임 전까지 온 사람이 있으면 수행 if ( finishBbangNum == 0 ) { //사람 왔는데 팔수있는 붕어빵이 0개면 return "Impossible"; }
finishBbangNum -= 1; //붕어빵 하나 제거 peoples.removeFirst(); //사람 목록에서 제거 if ( peoples.isEmpty() ) { //모든 사람이 왔으면 종료 return "Possible"; } } nowTime += M; //붕어빵 쿨타임 더해서 다음 붕어빵시간 계산 finishBbangNum += K; //붕어빵 개수 추가 } return "Possible"; } } |
'코딩 > SW Expert Academy' 카테고리의 다른 글
3750. Digit sum (0) | 2018.03.12 |
---|---|
1873. 상호의 배틀필드 (0) | 2018.03.11 |
1244. [S/W 문제해결 응용] 2일차 - 최대 상금 (0) | 2017.11.15 |
1491. 원재의 벽 꾸미기 (0) | 2017.11.14 |
1206. [S/W 문제해결 기본] 1일차 - View (0) | 2017.11.13 |