본문 바로가기
알고리즘/SWEA

[SWEA / 진기의 최고급 붕어빵 / JAVA]

by KDW999 2023. 5. 20.

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV5LsaaqDzYDFAXc&categoryId=AV5LsaaqDzYDFAXc&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=2 

 

SW Expert Academy

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

swexpertacademy.com

 

문제 접근

처음엔 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

댓글