https://www.acmicpc.net/problem/1092
1092번: 배
첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보
www.acmicpc.net
나의 코드
# 배
from collections import deque
n = int(input())
ships = deque(map(int, input().split()))
m = int(input())
boxes = list(map(int, input().split()))
boxes.sort(reverse=True) # 박스를 역정렬
max_ship = max(ships) # 배의 제한 무게 최댓값
count = 0
while boxes and max_ship >= boxes[0]: # 박스가 남아 있고 배의 제한 무게 최댓값이 박스 최대무게보다 클 때 계속 돈다
count += 1 # 한 줄 돌고 제거할 박스가 남아 있어서 횟수 +1
for i in range(n):
weight = ships.popleft()
for j in range(len(boxes)):
if weight >= boxes[j]:
boxes.remove(boxes[j])
break
ships.append(weight)
if len(boxes) == 0: # 다 제거되면 count 출력
print(count)
else: # 옮기지 못한 박스가 있으면 -1
print(-1)
결과

이것도 예전 강의에서 배웠던 내용을 적용하면 되는 문제였다. 사실 구하는 방법만 어렴풋이 기억나서 코드로 짜는데는 시간이 조금 많이 걸렸다. 그래도 골드인데 한 번에 통과했다! Python으로도 통과했으면 좋았으련만... 아직 다른 사람의 코드는 보지 못했는데 시간초과 문제를 해결할 수 있는 새로운 방법이 있다면 추가하겠다!
'스터디 1일 1커밋' 카테고리의 다른 글
| 240318 [BOJ/백준] 31575. 도시와 비트코인 (2) | 2024.03.19 |
|---|---|
| 240315 [BOJ/백준] 14501. 퇴사 (0) | 2024.03.15 |
| 240313[BOJ/백준] 7983. 내일 할거야 (0) | 2024.03.13 |
| 240312 [BOJ/백준] 4673. 셀프 넘버 (0) | 2024.03.12 |
| 240312 [BOJ/백준] 17298. 오큰수 (0) | 2024.03.12 |