728x90
반응형
방법 1 :
1초씩 증가시켜서 M초 나누어서 K개의 빵을 증가, 줄 수 있는 빵이 있는지 판별
방법 2 :
M초씩 증가시키면서 M초 전에 손님이 왔는지 판별, 있다면 빵을 줄 수 있는지 판별
Code
public class Solution1860 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int tc = 1; tc <= T; tc++) {
int N = sc.nextInt(); // 고객 수
int M = sc.nextInt(); // 붕어빵 만드는 시간
int K = sc.nextInt(); // M초 동안 만드는 붕어빵 개수
int[] client = new int[N];
boolean possible = true;
String result = "Impossible";
for (int i = 0; i < N; i++) { // 손님들이 오는 시간을 입력받음
client[i] = sc.nextInt();
}
Arrays.sort(client);
int lastTime = client[N - 1];
int idx = 0; // client[]를 각각 가리키는 인덱스 값
int bread = 0;
if (client[0] == 0) possible = false; // 손님이 0초에 오는 테스트 케이스가 있음. -> 생각 못하면 틀림
for (int i = 1; i <= lastTime; i++) { // 1초씩 증가시켜서(i) M초로 나누어지면 K개의 빵을 증가
if (i % M == 0) bread += K;
if (idx < N) {
if (i == client[idx]) {
idx++; // 다음 손님으로 idx값을 증가
if (bread > 0) bread--;
else { // 줄 빵이 없으므로 종료
possible = false;
break;
}
}
}
}
if (possible) result = "Possible";
System.out.println("#" + tc + " " + result);
}
}
}
Code
public class Solution {
static int N, M, K;
static int[] guest;
static String isPossible() {
int fishbread = 0; // 만들어진 붕어빵 수
int idx = 0; // 손님 번호
int time = 0;
while (true) {
while (time + M > guest[idx]) {
if (fishbread-- == 0) {
return "Impossible";
}
if (idx++ >= N - 1) { // idx가 0부터 시작하므로 N - 1 예를 들어, N =3 이면 guest[0]이 1번째 손님이므로
return "Possible";
}
time += M;
fishbread += K;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int t = 1; t <= T; t++) {
N = sc.nextInt(); // 손님 수
M = sc.nextInt(); // M분마다
K = sc.nextInt(); // K개 만든다
guest = new int[N];
for (int i = 0; i < N; i++) {
guest[i] = sc.nextInt();
}
Arrays.sort(guest); // 손님이 도착한시간 빨리온순서로 정렬
System.out.printf("#%d %s\n", t, isPossible());
}
}
}
728x90
반응형
'SWEA' 카테고리의 다른 글
swea 2805 [D3] 농작물 수확하기 JAVA (1) | 2023.11.29 |
---|---|
swea 1873 [D3] 상호의 배틀필드 JAVA (2) | 2023.11.24 |
swea 1493 [D3] 수의 새로운 연산 JAVA (1) | 2023.11.24 |
swea 1289 [D3] 원재의 메모리 복구하기 JAVA (1) | 2023.11.24 |
swea 1244 [D3] [S/W 문제 해결 응용] 2일차 - 최대 상금 JAVA (2) | 2023.11.24 |