Algorithm

[SWEA] 1225. 암호 생성기 python

문제

SW Expert Academy의 문제는 해당 사이트에서 확인하실 수 있습니다.

풀이과정

문제를 요약하자면, 첫번째 숫자를 뽑아 minus의 숫자만큼 뺀 뒤 숫자 리스트의 맨 뒤에 다시 집어넣는 것을 총 5번 반복합니다. (즉, minus를 1에서 5가 될 때까지 반복하고, 다시 1로 돌아옵니다.)
따라서 단순히 while문을 통해 맨 처음 것을 빼내고 minus만큼을 뺀 뒤 다시 맨 뒤로 집어넣는 과정을 반복하였고, 사이클 동안 진행할 때, number-minus가 0보다 작거나 같은 경우 0을 맨 뒤에 집어넣고, 해당 리스트를 출력해주도록 구현하였습니다.

소스코드


def logic(numbers):
    minus = 1
    while True:
        number = numbers.pop(0)
        if number - minus <= 0:
            numbers.append(0)
            break
        numbers.append(number - minus)
        minus += 1

        if minus > 5: # 한 사이클
            minus = 1
    return numbers


def print_list(test_case, numbers):
    print("#{}".format(test_case), end = " ")
    for number in numbers:
        print(number, end=" ")
    print()


for _ in range(10):
    test_case = int(input())
    numbers = list(map(int, input().split()))
    numbers = logic(numbers)
    print_list(test_case, numbers)