백준 알고리즘 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