반응형
문제:
https://www.acmicpc.net/problem/1434
풀이:
N, M = map(int, input().split())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
A.extend([0] * 1000)
B.extend([1001] * 1000)
result = 0
i = 0
j = 0
while(i <= N):
if A[i] < B[j]:
result += A[i]
i += 1
continue
elif A[i] >= B[j]:
A[i] = A[i] - B[j]
j += 1
continue
print(result)
반성:
이 문제는 푸는데 이틀은 고민했던 문제이다.
아직 갈 길이 너무너무 멀다는 것을 느끼고 있다.
잘 못 했던 점은
1. 처음에 for문을 두 개 사용하여 풀려고 했었다. 여기서 for문을 두 개나 사용하게 되면, 이미 박스에 넣었던 책인데
다음 박스에서 넣었던 책을 다시 들고 오게 된다. 처음에 접근을 잘 못 하여 이 부분을 해결하는 데에 많은 시간이 들었다. 반복문을 하나만 쓰는 방법으로 해결했다.
2. out of index 오류가 계속 발생해서 이 문제를 해결하기 위해 고민하는데 시간이 들었다. extend 함수를 사용해서
박스의 크기와 책의 크기를 입력받고 그 뒤의 리스트를 초기화해주는 방법으로 해결했다. 문제에 책과 상자의 크기
제한이 명시되어 있었고, 이를 초기화하는 기준으로 삼았다.
구글링을 할까 많은 고민을 했지만, 내 힘으로 풀어보고 싶었다. 아마 오늘도 풀지 못했다면 구글링을 했을 것 같다.
내 힘으로 풀었다는 생각에 뿌듯하기도 했지만, 간단한 문제를 이렇게 고민했다는 생각도 들었다.
반응형
'Python 코딩테스트' 카테고리의 다른 글
구현: 백준 10820 파이썬(Python) (0) | 2021.07.29 |
---|---|
그리디: 백준 2828 파이썬 (0) | 2021.07.13 |
그리디: 백준 15881 파이썬 (0) | 2021.07.11 |
그리디: 백준 18238 파이썬 (0) | 2021.07.05 |
그리디: 백준 11034 파이썬 (0) | 2021.06.28 |