Algorithm/백준

[백준 알고리즘] 3213번: 피자 (Python)

에릭 Kim 2023. 8. 8. 14:49
반응형

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

 

3213번: 피자

첫째 줄에 친구의 수 N이 주어진다. (1 ≤ N ≤ 10,000) 다음 N개 줄에는 각 친구가 먹을 수 있는 피자의 양이 주어진다. 이 값은 항상 분수이며, 1/4, 1/2, 3/4중 하나이다.

www.acmicpc.net

 

 

소스코드

코드가 길어 깃헙 소스코드 링크를 올립니다 ! 

https://github.com/busangangster/Algorithm/blob/main/baekjoon/Python/%EA%B7%B8%EB%A6%AC%EB%94%94/3213.py

 

풀이

★ 첨에 쉬운 문제라고 생각해서 푸는데, 문제가 계속 안풀려 구글링 해봤더니 번역이 조금 헷갈리게 되어 있었습니다 ! 

문제의 마지막 문단에 "모든 친구들이 정확히 한 조각씩 피자를 가져가야 한다"는 말은 예를 들어

ex) 1/2, 3/4와 같이 주어진 경우, 피자 한 판과 나머지 1/4이 필요한 것이 아니라, 피자 2판에서 각각 1/2, 3/4씩 먹어야 한다는 것입니다 ! 

 

★ 위의 조건을 토대로 풀이를 하면 1/4은 3/4와 합쳐서 피자 한판을 통으로 처리할 수 있습니다. 또한 1/2은 1/4 2개와 함께 한 판으로 처리할 수 있습니다 ! 

 

★ 그 후 남은 양은 다른 조각과 함께 처리할 수 없는 것이기에 각각의 피자가 필요로 하게 됩니다. 

 

★ 이 때 피자 조각을 제거하는 순서 (while)이 중요합니다. 그 이유는 1/4과 3/4를 먼저 처리하는 결과와 1/2와 1/4 2개를 먼저 처리하는 결과가 서로 다르게 나오기 때문입니다. 

 

후기

- 실버 4인데 상당히 애를 먹은 문제였던 거 같습니다. 구현하는 부분보다 문제를 이해하는 게 조금 더 힘들었던 거 같네요 ! 

반응형