본문 바로가기

알고리즘/Python

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

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV14uWl6AF0CFAYD&categoryId=AV14uWl6AF0CFAYD&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=PYTHON&select-1=3&pageSize=10&pageIndex=2 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제

다음 주어진 조건에 따라 n개의 수를 처리하면 8자리의 암호를 생성할 수 있다.

- 8개의 숫자를 입력 받는다.

- 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로 보낸다. 

다음 첫 번째 수는 2 감소한 뒤 맨 뒤로, 그 다음 첫 번째 수는 3을 감소하고 맨 뒤로, 그 다음 수는 4, 그 다음 수는 5를 감소한다.

이와 같은 작업을 한 사이클이라 한다.

- 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램은 종료된다. 이 때의 8자리의 숫자 값이 암호가 된다.

[1 사이클]

 
 
[암호 도출]
 
 

제출 답안

from collections import deque

def password(queue):
     # 한 자리가 아니라면 실행
    while(True):
        for i in range(1, 6):
            num = queue.popleft()
            queue.append(num-i)

            if queue[-1]<=0:
                queue[-1] = 0
                return queue

for test_case in range(1, 11):
    queue = deque()

    n = int(input())
    nums = list(map(int, input().split()))
    for i in range(8):
        queue.append(nums[i])
    result = password(queue)
    
    print(f"#{test_case}", end=" ")
    for q in queue:
        print(f"{q}", end=" ")
    print()