728x90
문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LsaaqDzYDFAXc#
풀이
for문 안에서 시간 i가 1초씩 증가한다고 생각하고 풀었음
쉬운 문제라서 구현을 하고 돌려보았을때 주어진 테스트케이스들은 정답이었지만 제출하니까 1000개 테케 중 993개만 맞았다고 해서 다시 코드를 뜯어봤음 ㅠㅠ
0초에도 손님이 올 수도 있다는 것을 생각지 못하고 시간을 1초부터 시작을 해줘서 그 부분을 고쳐줬음
그런데도 통과가 되지 않아서 알고보니까 i % current == 0 에서 i 가 0일 때도 0이 나오기 때문에 로직에 에러가 있던 거였음! 그 후에 if문 조건식을
if (i != 0 && i % M == 0) { }
이렇게 바꿔주었더니 통과했음!!!
코드
// 1860 - 진기의 최고급 붕어빵
package d3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Num1860_진기의최고급붕어빵 {
public static void main(String[] args) throws IOException {
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());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int[] 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);
int max = arr[arr.length - 1];
int current = 0;
for (int i = 0; i <= max; i++) {
if (i != 0 && i % M == 0) {
current += K;
}
for (int j = 0; j < arr.length; j++) {
if (arr[j] == i) {
current--;
if (current < 0) {
sb.append("#" + t + " ").append("Impossible").append("\n");
break;
}
}
}
if (current < 0) {
break;
}
}
if (current >= 0) {
sb.append("#" + t + " ").append("Possible").append("\n");
}
}
sb.setLength(sb.length() - 1);
System.out.println(sb);
}
}
728x90