Skip to content

Latest commit

 

History

History
116 lines (100 loc) · 3.47 KB

swea_baking_pizza.md

File metadata and controls

116 lines (100 loc) · 3.47 KB

swea baking pizza

16524

  • input
3
3 5 
7 2 6 5 3
5 10
5 9 3 9 9 2 5 8 7 1
5 10
20 4 5 7 3 15 2 1 2 2
  • solve
import sys
sys.stdin = open('sample_input.txt', 'r')
T = int(input())

for test_case in range(1, T + 1):
    N, M = map(int, input().split())
    arr = list(map(int, input().split()))
    # list_num = []
    # for i, word in enumerate(arr):
    #     list_num.append((i+1, word))

    cheeze = []
    for i in range(M):
        cheeze.append([arr[i], i])
    print(cheeze)
    tunnel = []
    for i in range(N):
        tunnel.append(cheeze[i])
        # cheeze.pop(0)

    print(tunnel)
    num = 0
    while len(tunnel) > 1:
        tunnel[0][0] //= 2

        if tunnel[0][0] == 0:
            if N + num < M:
                # 첫 피자를 뒤로 보내준다. (회전)
                tunnel.pop(0)
                tunnel.append(cheeze[N + num])
                num += 1
            else:
                tunnel.pop(0)
            # 치즈 녹은 피자를 빼준다.
        else:
            tunnel.append(tunnel.pop(0))
        # 치즈가 안녹은 피자 하나를 빼준다.

    print(f'#{test_case} {tunnel[0][1] + 1}')
  • 다른 풀이
t = int(input())
for tc in range(1,t+1):
    # 화덕의 크기 N, 피자의 개수 M
    N, M = map(int, input().split())
    # 각 피자의 치즈의 양을 입력 받음
    num_list = list(map(int,input().split()))
    # 피자의 접시 번호를 리스트에 할당,
    # 초기값 0을 미리 넣어준다.
    dish_list = [0]

    # queue 를 생성, 초기값을 미리 넣어준다.
    que = [num_list[0]]
    # 저장된 원소 중 마지막 자리를 rear 변수에 할당,
    # queue에 미리 넣어줬으므로 초기값은 0으로 설정
    rear = 0
    i = 1

    # queue 가 완전히 비워질 때까지 반복한다.
    while que:
        # rear가 N-1이면 queue가 꽉 찼으므로
        # 화덕 한 바퀴 돌리고 처음 들어간 피자의 치즈 양을 체크한다(check 변수에 할당)
        # 이 때 접시 번호 리스트도 pop 하여 확인한다.
        # check // 2 한 값이 0보다 크다면 다시 queue 의 마지막에 append 해주고
        # 접시 번호도 같이 append 해준다.
        if rear == N - 1:
            check = que.pop(0)
            dish_num = dish_list.pop(0)
            if check // 2:
                que.append(check // 2)
                dish_list.append(dish_num)
            # check // 2 값이 0이라면 그 피자를 빼주므로 queue, 접시 번호 리스트에서
            # 각각 pop한다.
            # 그리고 저장된 원소 중 마지막 자리를 의미하는 rear 에서 1을 빼준다.
            else:
                # 이 조건은 i 가 M 에 도달할 때, 즉 더 이상 넣을 피자가 없다면
                # 아래의 else 문으로 가지 않도록 하기 위한 조건이다.
                if i == M:
                    rear += 1
                rear -= 1
        # rear 가 N - 1 이 아니라면, 즉 queue가 아직 덜 찼다면,
        # rear 에 1을 더해주고, queue에 피자의 치즈 양을 append 해주고
        # 그에 해당하는 인덱스 i를 접시 번호 리스트에 append 해준다.
        # 그리고 다음 인덱스를 살펴보기 위해 i += 1 해줌
        else:
            rear += 1
            que.append(num_list[i])
            dish_list.append(i)
            i += 1
    # 출력하고자 하는 접시 번호는 인덱스 + 1 이므로
    print(f'#{tc} {dish_num + 1}')