[문제]
https://www.acmicpc.net/problem/1680
[풀이]
[코드]
if __name__ == '__main__':
for _ in range(int(input())):
w, n = map(int, input().split())
testcase = []
for __ in range(n):
x_i, w_i = map(int, input().split())
testcase.append([x_i, w_i])
capacity = 0
distance = 0
previous_value = 0
for i in testcase:
# i[0]: 쓰레기장으로부터의 거리 i[1]: 쓰레기의 양
if capacity + i[1] < w:
distance += i[0] - previous_value
capacity += i[1]
elif capacity + i[1] == w:
distance += (i[0] - previous_value) + i[0] * 2
capacity = 0
if testcase.index(i) == n - 1:
distance -= i[0] * 2
elif capacity + i[1] > w:
capacity = i[1]
distance += (i[0] - previous_value) + i[0] * 2
previous_value = i[0]
# 모든 쓰레기를 수거하여 다시 쓰레기장으로 돌아갈 때
if testcase.index(i) == n - 1:
distance += i[0]
print(distance)
'문제풀이 > BOJ' 카테고리의 다른 글
[Python] BOJ/백준 1333번 부재중 전화 (1) | 2021.07.08 |
---|---|
[Python] BOJ/백준 1284번 집 주소 (0) | 2021.07.08 |
[Python] BOJ/백준 1357번 뒤집힌 덧셈 (0) | 2021.07.01 |
[Python] BOJ/백준 1526번 가장 큰 금민수 (0) | 2021.06.30 |
[Python] BOJ/백준 1292번 쉽게 푸는 문제 (0) | 2021.06.30 |