백준 알고리즘 1920번
2023. 11. 8. 22:13ㆍ알고리즘
[첫 번째 시도]
봉지수를 최소화하기 위해 전체 무게 N에서 5kg이 들어갈 수 있는 최대 수 구함(five)
5kg 봉지만큼을 뺀 무게를 이번에는 3으로 나눠서 3kg이 들어갈 수 있는 최대 수 구함(share)
5kg과 3kg이 모두 빠졌을 때 남은 무게 구함(rest)
이때 rest가 0이면 Nkg 만큼 모두 가져간 것이므로 five와 share을 더해서 print하고 break 로 while문을 빠져나감
rest가 1이면 5kg을 한 번 빼야 함. 그러면 나머지가 6이니까 3kg이 2번 더 들어가면 rest가 0이 됨. 그래서 five-1+share+2 = five+share+1 을 프린트함.
rest가 2이면 5kg을 두 번 빼야 함. 그러면 나머지가 12니까 3kg이 4번 더 들어가서 rest가 0이 됨. 그래서 five-2+share+4 = five+share+2를 프린트함.
첫 번째 시도에서는 rest==1 또는 rest==2인 경우 break를 쓰지 않아서 while문이 계속 돌아감 => 시간 초과
[두 번째 시도]
N이 3보다 작아서 아예 5로 나눗셈이 불가능한 경우, 3보다 크더라도 꽉 채우는 게 불가능한 경우(4kg, 7kg)을 고려하지 않아서 틀림. N이 1, 2, 4, 7 일 경우 5와 3으로 꽉 채우는 게 불가능하기 때문에 -1을 프린트해야 함. => 틀림
[세 번째 시도]
'알고리즘' 카테고리의 다른 글
백준 1541번 잃어버린 괄호 (1) | 2023.12.06 |
---|---|
백준 알고리즘 11659번(구간합 구하기) (1) | 2023.12.04 |
백준 1213번(팰린드롬 만들기) (1) | 2023.11.29 |
백준 1072번(이분탐색) python (1) | 2023.11.18 |
백준 1929 (1) | 2023.11.16 |