티스토리 뷰
728x90
진기는 0초부터 붕어빵을 만들기 시작하며, M초의 시간을 들이면 K개의 붕어빵을 만들 수 있다.
N명의 사람들이 오는 시간에 따라 붕어빵을 제공할 수 있는지 없는지를 판별하는 문제이다.
thinking
무조건 손님 1명한테는 1개의 붕어빵을 판매하기 때문에 하나씩 카운트를 해주면 된다.
0초부터 M초 마다 붕어를 만듦으로 M, 2M, 3M, ... 초 마다 K, 2K, 3K의 붕어빵이 남는다.
그렇다면 일반적으로 x
초 일때의 붕어 생산량과 그 전에 사간 사람의 수를 빼면 x초의 붕어빵 재고를 알 수 있다.
재고가 음수가 되면 다 팔렸다는 뜻이므로 Impossible 을 출력하면 된다.
손님이 온 시간을 arrive_time
이라는 리스트에 담아 올림차순으로 소팅을 해준 후,
소팅한 arrive_time
리스트를 순회하며 가장 적은 시간부터 순서대로 체킹을 했다.
일반적으로 x초까지 만들어진 붕어 개수는 (x // M) * K
이다.
왜냐하면 단위 시간(M
)으로 나눈 몫만큼 만들 수 있고, 그때마다 K
개를 만들기 때문이다.
인당 1개씩 구매하기 때문에 (x // M) * K
에서 인덱스+1
만큼 빼주면 된다.
코드
import sys
sys.stdin = open("input.txt")
T = int(input())
for tc in range(1, T+1):
# N: 사람수, M초의 시간을 들이면 K개의 붕어 만들수있음
N, M, K = map(int, input().split())
arrive_time = list(map(int, input().split()))
arrive_time.sort()
result = "Possible"
# x초까지 만들어진 붕어 개수: (x // M) * K
for i in range(N):
boong = (arrive_time[i] // M) * K - (i+1)
if boong < 0:
result = "Impossible"
break
print("#{} {}".format(tc, result))
'algorithm > swea' 카테고리의 다른 글
[swea] 1220. Magnetic / python 파이썬 (0) | 2021.04.08 |
---|---|
[swea] 1219. 길찾기 / python 파이썬 (1) | 2021.04.08 |
[swea] 4869. 종이붙이기 / python 파이썬 (0) | 2021.04.08 |
[swea] 1954. 달팽이 숫자 / python 파이썬 / 2차원 배열의 인덱스 접근 (1) | 2021.02.17 |
[swea] 1210. Ladder 1 사다리타기 / python 파이썬 (0) | 2021.02.17 |
댓글
글 보관함
TAG
- 브루트포스
- git 미러링
- 영어끝말잇기
- 20056 마법사 상어와 파이어볼
- 삼성코테
- react
- dp
- Python
- 기지국설치
- swea
- BFS
- 백준
- 프로그래머스
- 21609 상어 중학교
- merge 에러
- 17406 배열돌리기4
- merge에러
- 2018 카카오 공채
- 2579 계단오르기
- 파이썬
- 보석쇼핑
- 20057 마법사 상어와 토네이도
- 삼성기출
- 알고리즘
- dfs
최근에 올라온 글
- Total
- Today
- Yesterday
최근에 달린 댓글