말랑한 하루

[SW Expert Academy] 1860 진기의 최고급 붕어빵 [Java] 본문

문제풀이/SWexpert Academy

[SW Expert Academy] 1860 진기의 최고급 붕어빵 [Java]

지수는말랑이 2021. 2. 1. 16:48
반응형

[ 핵심풀이 ]

0) 사람들이 오는 시간이 랜덤하게 들어오므로, 입력받고 소팅해주어야한다!

1) 사람이 시간초에 왓을때, 만들어질 수 있는 붕어빵의 개수를 구한다

2) 사람이 시간초에 왔을때, 그전에 받아간 사람이 있는지 확인한다

3) 사람이 시간초에 왔을때, 만들어진 붕어빵의 개수보다 받아간사람이 많거나 같다면 이사람은 받을 수 없다

[ 핵심소스 ]

for(int item : ary) {
    now = (item/M)*K;
    if (now-yet <= 0) return false;
    yet+=1;
}

[ Java ]

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class _1860_진기의_최고급_붕어빵 {
    static void init() {
        Scanner sc = new Scanner(System.in);
        int TC = sc.nextInt();
        for (int t = 1; t <= TC; t++) {
            int N = sc.nextInt();
            int M = sc.nextInt();
            int K = sc.nextInt();

            ArrayList<Integer> ary = new ArrayList<Integer>();
            for (int i = 0; i < N; i++)
                ary.add(sc.nextInt());
            Collections.sort(ary);

            System.out.print("#" + t + " ");
            if (solve(N, M, K, ary))
                System.out.println("Possible");
            else
                System.out.println("Impossible");
        }
    }

    static boolean solve(int N, int M, int K, ArrayList<Integer> ary) {
        int now = 0;
        int yet = 0;
        for(int item : ary) {
            now = (item/M)*K;
            if (now-yet <= 0) return false;
            yet+=1;
        }
        return true;
    }

    public static void main(String[] args) {
        init();
    }
}
반응형
Comments