문제 접근
처음엔 0초부터 시간을 1씩 증가시키면서 손님이 오는 시간이 됐을 때 붕어빵이 몇 개 만들어졌는지 풀었는데
케이스 950개만 맞고 틀렸다고하더라
처음에 엄청 길게 풀어서 접근했는데 되게 간단한 생각으로 풀리더라
손님이 오는 시간들을 배열로 저장해서 시간들을 M으로 나누어서 K만큼 곱한 걸로 해당 시간의 붕어빵 총 갯수를 구하고
그럼 그 때의 손님은 붕어빵을 가져가니 -1 해주며 앞서 다녀갔던 손님들 수 만큼 더 빼줘야하니 -i도 연산한다.
import java.util.*;
import java.io.*;
public class Solution {
static int[] time;
static int fish;
static int count;
static int N, M, K;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int t=1; t<=T; t++) {
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken()); // 손님 수
M = Integer.parseInt(st.nextToken()); // 붕어빵 만드는 시간
K = Integer.parseInt(st.nextToken()); // 한 번에 만들어지는 붕어빵 갯수
time = new int[N];
fish = 0;
st = new StringTokenizer(br.readLine());
for(int i=0; i<time.length; i++) time[i] = Integer.parseInt(st.nextToken());
Arrays.sort(time);
check(t);
}
}
public static void check(int t) {
for(int i=0; i<time.length; i++) {
fish = (time[i] / M) * K; // 손님이 온 시간이 됐을 때 붕어빵 몇개 만들어졌는지
if(fish-i-1 < 0 ) { // i는 앞에 손님들의 수
System.out.println("#"+t+" Impossible");
return;
}
}
System.out.println("#"+t+" Possible");
}
}
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA / 문자열문자열 / JAVA] (0) | 2023.07.16 |
---|---|
[SWEA / String / JAVA] (0) | 2023.07.13 |
[SWEA / 부분 수열의 합 / JAVA] (0) | 2023.05.20 |
[SWEA / 햄버거 다이어트 / JAVA] (0) | 2023.05.20 |
[SWEA / Sum / JAVA] (0) | 2023.05.19 |
댓글