3213 피자 _python

    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

    댓글