Algorithm/Greedy

[Python] SWEA 1860번 진기의 최고급 붕어빵

코딩쪼앙 2023. 5. 12. 22:16

문제

 

SW Expert Academy

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

swexpertacademy.com

문제 풀이

  • 손님을 온 순서대로 오름차순 정렬한다.
  • 손님이 온 시각까지 만들어진 붕어빵 개수는 (도착시간 // m) * k이다.
    • 붕어빵을 만드는 데 소요되는 시간(M)으로 나눈 몫의 횟수만큼 붕어빵을 만들 수 있고, m초에 k개를 만들 수 있으므로, 나눈 몫에 k를 곱한다. 그 후 인당 한 개씩 붕어빵을 구매하므로 (i + 1)값을 빼 주면, 현 시각 붕어빵을 구매하고 남은 총 개수를 구할 수 있다.
  • 계산된 붕어빵의 개수는 array[i]초에 1개를 구매하고 난 후의 붕어빵 개수이므로, 빵의 값이 0이아닌 음수일 때 구매할 수 없는 상태로 보고 결과를 impossible로 바꿔준다.
  • 형식에 맞게 결과를 출력한다.

코드

t = int(input())
for tc in range(t):
    n,m,k = map(int,input().split())
    array = list(map(int,input().split()))
    array.sort()
    result = 'Possible'
    for i in range(len(array)):
        bread = ((array[i] // m) * k) - (i + 1)
        if bread < 0:
            result = 'Impossible'
    print(f'#{tc + 1}',result)

'Algorithm > Greedy' 카테고리의 다른 글

[Python] 프로그래머스 구명보트  (1) 2024.07.16
[Python] 백준 1138번 한 줄로 서기  (2) 2023.06.16
[Python] 백준 16953번 A -> B  (0) 2023.03.24
[Python] 백준 10610번 30  (0) 2023.03.24
[Python] 백준 1946번 신입사원  (0) 2023.03.20