코딩테스트/SWExpertAcademy

[SWExpertAcademy]1860번 진기의 최고급 붕어빵 - Java

GAEBAL 2022. 3. 12. 23:52
728x90

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LsaaqDzYDFAXc# 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

풀이

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