본문 바로가기

Python 코딩테스트

그리디: 백준 1434 파이썬

반응형

문제:

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

 

1434번: 책 정리

첫째 줄에 박스의 개수 N, 책의 개수 M이 주어진다. 둘째 줄에는 박스의 용량 A1, A2, ..., AN이 주어지고, 셋째 줄에는 B1, B2, ..., BM이 주어진다.

www.acmicpc.net

 

풀이: 

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 함수를 사용해서 

박스의 크기와 책의 크기를 입력받고 그 뒤의 리스트를 초기화해주는 방법으로 해결했다. 문제에 책과 상자의 크기 

제한이 명시되어 있었고, 이를 초기화하는 기준으로 삼았다.

 

구글링을 할까 많은 고민을 했지만, 내 힘으로 풀어보고 싶었다. 아마 오늘도 풀지 못했다면 구글링을 했을 것 같다.

내 힘으로 풀었다는 생각에 뿌듯하기도 했지만, 간단한 문제를 이렇게 고민했다는 생각도 들었다.

반응형