[SW Expert Academy] 1860. 진기의 최고급 붕어빵

sun1·2023년 3월 2일
0

im_test

목록 보기
1/22
post-thumbnail

문제

SWEA 1860. 진기의 최고급 붕어빵
https://swexpertacademy.com/main/talk/solvingClub/problemPassedUser.do?contestProbId=AV5LsaaqDzYDFAXc&solveclubId=AYWpDVe6hEgDFAVt&problemBoxTitle=230302_%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4&problemBoxCnt=2&probBoxId=AYadMuTKG1sDFAQ9

풀이

조건

  • 각각의 도착시간이 두번째 입력조건으로 주어지는 N명의 손님에게 모두 팔 수 있어야 Possible 하다고 판단한다.
  • M초의 시간에 K개의 붕어빵을 만들 수 있으므로 임의의 시간 x에서 만들어진 붕어빵 수는
    (x // M) * K 개이다.
  • 도착한 손님에게는 1개의 붕어빵을 팔 수 있다.

풀이 순서

  • N, M, K와 도착 시간을 입력값으로 받는다.
  • 도착시간이 순서대로 주어진 것이 아니라서 도착 시간 배열을 오름차순으로 정렬해줘야한다.
  • 손님이 도착한 시간에 만들어진 붕어빵 개수와 판 개수를 비교하여 음수가 된다면 팔 수 없는 상황이라 판단한다.

코드

Python

T = int(input())
for tc in range(1, T+1):
    N, M, K = map(int, input().split())
    arr = list(map(int, input().split()))  #손님 도착 시간 배열
    arr.sort() #먼저 도착한 손님부터 붕어빵을 팔아야 한다.
    result = "Possible"

    for i in range(N):
    	# i 번째 손님이 도착했을때 만들어진 붕어빵 개수와 이미 판 개수의 차이가 0 이상이어야 possible!
        if (arr[i] // M) * K  - (i+1) < 0:
            result = "Impossible"
            break

    print(f'#{tc} {result}')

0개의 댓글