Notice
Recent Posts
Recent Comments
05-10 13:46
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

-

[백준 1756] 피자굽기 - 파이썬 본문

Algorithm

[백준 1756] 피자굽기 - 파이썬

choiht 2024. 4. 13. 22:05
반응형

문제

https://www.acmicpc.net/problem/1756

 

1756번: 피자 굽기

첫째 줄에 오븐의 깊이 D와 피자 반죽의 개수 N이 공백을 사이에 두고 주어진다. (1 ≤ D, N ≤ 300,000) 둘째 줄에는 오븐의 최상단부터 시작하여 깊이에 따른 오븐의 지름이 차례대로 주어진다. 셋

www.acmicpc.net

 

 

 

풀이 방법

오븐이 현재 5 6 4 3 6 2 3 처럼 되어있으므로 어차피 지름이 3인 반죽은 맨 밑바닥까지 가지 못하고 그 위에 지름이 2인 오븐에서 막힌다.

따라서 이를 비교하기 쉽도록 바꿔줘야한다. 

 

5 6 4 3 6 2 3 → 5 5 4 3 3 2 2 로 바꿔주는 작업이 필요하다.

 

그 후에는 가장 밑바닥 오븐부터 차례대로 올라오며 피자 반죽의 지름과 비교한다.

 

 

 

 

코드 

d, n = map(int, input().split())  #오븐 깊이, 반죽 개수
oven = list(map(int, input().split()))
pizza = list(map(int, input().split()))
       

for i in range(1, d):
    if oven[i] > oven[i-1]:
        oven[i] = oven[i-1]
        
p = 0   #오븐에 넣은 피자 반죽 개수
i = d - 1  #오븐 인덱스

while i >= 0:
    if pizza[p] <= oven[i]:  #오븐의 제일 밑바닥부터 비교
        p += 1
        if p == n:
            break
    i -= 1
            

if p < n:  #피자 반죽이 아직 남아있으면
    print(0)
else:
    print(i + 1)
반응형
Comments