Skip to content
CatBus
Go back

[BOJ] 피자 굽기 - 1756 (G5)

시간 제한메모리 제한
2 초128 MB

문제

오븐은 원통 모양이며 깊이 D이다. 각 깊이마다 지름이 다르다. 반죽을 넣을 때 위에서부터 차례대로 넣는다. 반죽이 오븐보다 크면 해당 위치에 걸린다.

모든 반죽을 넣었을 때, 마지막 반죽이 들어간 깊이를 구하는 프로그램을 작성하시오.

풀이

구현 문제이다. 각 위치에서 그 위의 최소값을 미리 계산해둔다.

코드

import sys
input = sys.stdin.readline

D, N = map(int, input().split())
oven = list(map(int, input().split()))
doughs = list(map(int, input().split()))

min_oven = oven[0]
for i in range(1, D):
    min_oven = min(min_oven, oven[i])
    oven[i] = min(oven[i], min_oven)

oven_i = D - 1
dough_i = 0

while dough_i < N:
    if oven[oven_i] < doughs[dough_i]:
        # 못들어감
        oven_i -= 1
        if oven_i < 0:
            # 다 들어갈 수 없음
            print(0)
            break
    else:
        dough_i += 1
        oven_i -= 1

else:
    print(oven_i + 2)

시간 복잡도

O(D + N)


Share this post:

비슷한 글

1756이 글

본문을 Xenova/multilingual-e5-small 로 임베딩하고, 그 벡터를 PCA 로 32축에 눌러 왼쪽 막대로 그렸습니다. 비슷한 글은 지문도 닮습니다 — 위아래를 견줘 보세요. 계산은 빌드 때 끝나고 벡터는 브라우저로 오지 않습니다.

Previous Post
[BOJ] 키 순서 - 2458 (G4)
Next Post
[BOJ] 알고리즘 수업 - 너비 우선 탐색 3 - 24446 (S2)