알고리즘/SWAE

[Python] [D3] 1225. 암호생성기 ( 큐 )

황성안 2021. 3. 4. 15:58
728x90

출저 : SW Expert Academy 1225번 암호 생성기 문제.

 

문제 :

 

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# T = 1
# for tc in range(1,T+1):
#     N = int(input())
#     number = list(map(int,input().split()))
#
#
#     temp = 0
#
#     while number[7] >= 0:
#         m = 1
#         if number[0] >= m:
#             temp = number[0] - m
#             number[0] = number[1]
#             number[1] = number[2]
#             number[2] = number[3]
#             number[3] = number[4]
#             number[4] = number[5]
#             number[5] = number[6]
#             number[6] = number[7]
#             number[7] = temp
#             m += 1
#         elif number[7] <= m:
#             m = 1
#         elif number[0] == 0:
#             break
 
= 10
for tc in range(1, T+1):
    n = int(input()) # 필요없음
    number = list(map(int, input().split()))    #비밀번호가 될 숫자 받아오기
    m = 1                                       #하나씩 마이너스 해줄 숫자
    #isFalse = True
 
 
    while True:
        temp = number.pop(0- m                   # temp 에 마지막숫자를 -m 한값을 넣어준다.
 
        if temp < 0:                             #temp가 0 이하면 그냥 0으로 !
            temp = 0
        number.append(temp)
 
        if temp <= 0:                              #마지막 숫자가 0이 되었다면 그암호가 되므로 반복문 종료
            #isFalse = False
            break
        m += 1 # 점차 커지기
 
        if m > 5:                     #사이클이 끝나면 다시 m = 1로 초기화
            m = 1
    #print(number)
    print('#{} '.format(tc), end='')
    print(*number)
 
cs
728x90