728x90
- 155ms
간단하게 생각하기 !!
이 문제의 핵심은 입력 중 손님들이 오는 시간은 오름차순으로 주어지지 않는다. 따라서 먼저 Arrays.sort()
를 통해 정렬해준다.
먼저 오는 손님들 부터 탐색하며 손님이 온 시간일 때,
1. 붕어빵을 몇 개 만들 수 있는지 구하기
2. 앞의 손님들의 수(i) 빼줬을 때 0보다 작으면 제공할 붕어빵이 없다는 것
int dessert = (arr[i] / m) * k;
if (dessert - i <= 0) flag = false;
# 소스코드
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
public class Solution {
static int n, m, k;
static int[] arr;
public static void main(String[] args) throws IOException {
// System.setIn(new FileInputStream("input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for (int t = 1; t <= T; t++) {
st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken()); // n명의 손님
m = Integer.parseInt(st.nextToken()); // m초의 시간마다 k개의 붕어빵 생성
k = Integer.parseInt(st.nextToken());
arr = new int[n];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
boolean flag = true;
for (int i = 0; i < n && flag; i++) {
int dessert = (arr[i] / m) * k;
if (dessert - i <= 0) flag = false;
}
sb.append('#').append(t).append(' ').append(flag ? "Possible" : "Impossible").append('\n');
}
System.out.println(sb);
}
}
코드에 대한 피드백은 언제나 환영입니다🧚🏻♀️
728x90
'Algorithm > Problem Solving' 카테고리의 다른 글
[SWEA/D5] 7258. 혁진이의 프로그램 검증 - JAVA 자바 (0) | 2024.03.01 |
---|---|
[SWEA/D4] 1868. 파핑파핑 지뢰찾기 - JAVA 자바 (0) | 2024.03.01 |
[SWEA/모의 SW역량테스트] 2115. 벌꿀 채취 - JAVA 자바 (0) | 2024.02.29 |
[SWEA/모의 SW역량테스트] 1952. 수영장 - JAVA 자바 (0) | 2024.02.23 |
[SWEA/모의 SW역량테스트] 2117. 홈 방범 서비스 - JAVA 자바 (0) | 2024.02.23 |