본문 바로가기

알고리즘 문제풀이

Swea D2_1225.암호생성기 Python Queue

def password():
    front = rear = -1
    while True:
        if arr[rear % N] > 0:
            for i in range(N):
                for j in range(1, 6):
                    rear += 1
                    a = arr.pop(0) - j
                    if a <= 0:
                        a = 0
                        arr.append(a)
                        return
                    arr.append(a)
        else:
            break
for i in range(10):
    tc = int(input())
    N = 8
    arr = list(map(int,input().split()))
    password()
    print(f'#{tc}',*arr)

 

 

오늘의 뻘짓 : stack을 매우 길게 고정값으로 만들고, pop하는 것 없이 계속 더하기

for i in range(8):
    tc = int(input())
    N = 8
    arr = list(map(int,input().split()))
    stack = [1] * 100000
    # print('stack',stack)
    front = rear = -1
    while True:
        if stack[rear] <= 0:
            print('stack에서 break')
            break

            # 9550 9556 9550 9553 9558 9551 9551 9551
        for j in range(1,6):
            rear += 1
            stack[rear] = arr[rear % N] - j
            arr[rear % N] = stack[rear]
        if arr[rear % N] <= 0:
            arr[rear%N] = 0
            # print('arr에서 break')
            break
    # arr.append(arr.pop(0))
    print(f'#{tc}', *arr)
    # print(*arr)
    # print(stack[rear])
    # print('after',stack)
    # print(arr)
    # print()