1225. [S/W 문제해결 기본] 7일차 - 암호생성기

dannyp0930·2021년 8월 27일
0

SW Expert Academy

목록 보기
11/14
post-thumbnail

출처 : 링크텍스트

1. 풀이 방법

Queue를 이해하기 위한 기초 문제이다. 가장 앞의 요소를 pop하고 일정한 값을 빼주어 append하는 과정을 반복하는 문제이다.

2. 코드

첫번째 방법

for tc in range(10):
    T = int(input())
    arr = list(map(int, input().split()))
    while arr[-1] != 0:
        for i in range(1, 6):
            arr.append(arr.pop(0) - i)
            if arr[-1] <= 0:
                arr[-1] = 0
                break
    print('#{0}'.format(T), *arr)

내장 함수를 사용한 간단한 방법이다.

두번째 방법

qsize = 9
Q = [0] * qsize
f = r = 0


def isEmpty():
    return f == r


def isFull():
    return f == (r + 1) % qsize


def push(item):
    global r
    r = (r + 1) % qsize
    Q[r] = item


def pop():
    global f
    f = (f + 1) % qsize
    return Q[f]


for tc in range(10):
    T = int(input())
    arr = list(map(int, input().split()))
    for val in arr:
        push(val)

    cnt = 1
    while Q[r]:
        val = pop() - cnt
        cnt += 1
        if cnt == 6:
            cnt = 1
        if val < 0:
            val = 0
        push(val)
    while not isEmpty():
        print(pop(), end=' ')
    print()

위의 내장함수의 과정을 사용자 정의 함수로 만들어 queue가 어떠한 방식으로 구동되는지 확인해 보았다.

profile
Newbie 개발자

0개의 댓글