https://www.acmicpc.net/problem/3213
3213번: 피자
첫째 줄에 친구의 수 N이 주어진다. (1 ≤ N ≤ 10,000) 다음 N개 줄에는 각 친구가 먹을 수 있는 피자의 양이 주어진다. 이 값은 항상 분수이며, 1/4, 1/2, 3/4중 하나이다.
www.acmicpc.net
실랜디로 만난 문제!
문제를 읽고 "예제1을 보면 2가 아니라 왜 3이지?" 라는 의문이 생긴다.
문제 질문에도 비슷한사람들이 보였는데, 쉽게 설명하자면
1/2조각을 먹는사람은 1/4 + 1/4 를 먹는게 아니다.
피자를 절반으로자른 1/2조각 자체를 먹는거다.
그리고 3/4또한 1/4 + 1/4 + 1/4라고 생각하면 안된다.
3/4조각 자체를 먹는것이다.
그러니까 1번예제를 그림으로 그리면
진짜 개열받게 먹는다.
문제 접근
계산을 크게하지않고 잘 생각한다면 쉽게 풀릴듯 하다.
어차피 1/2과 3/4은 합할수 없다. 하지만 1/4조각은 1/2과 3/4의 잔반처리용으로 딱이다.
1/2에는 1/4을 2조각넣고, 3/4에는 1/4을 1조각 끼워넣을 수 있다.
이거만 유의하면서 접근하면 풀린다.
만약 40~60%사이에서 틀린다면 1/4의 활용을 1/2과 3/4조 사이에 끼워넣는 곳에서 생각못한 부분이 생긴것
풀이
from math import ceil
import sys
input = sys.stdin.readline
"""
1/4과 3/4는 합쳐서 1판이다.
3/4은 1판과 같다
1/2는 2개가 1판과 같다.
1/2는 1/4 2조각과 합할수 있다.
"""
N = int(input())
slice1 = 0
slice2 = 0
slice3 = 0
ans = 0
for i in range(N):
x = input().rstrip()
if(x=="1/4"): slice1+=1
if(x=="3/4"): slice2+=1
if(x=="1/2"): slice3+=1
if slice1 <= slice2:
ans = slice2 + ceil(slice3/2)
else:
ans = slice2 + ceil(slice3/2) + ceil((slice1-slice2-(slice3%2*2))/4)
print(ans)
'백준 > 문제풀이_python' 카테고리의 다른 글
1149 RGB거리 _python (0) | 2022.10.25 |
---|---|
10773 제로 _python (0) | 2022.10.25 |
1026 보물 _python (0) | 2022.10.24 |
11728 배열 합치기 _python (0) | 2022.10.24 |
10819 차이를 최대로 _python (0) | 2022.10.21 |
댓글