Post
1225. 암호생성기 (SWEA) | Gihun Son

1225. 암호생성기 (SWEA)

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

출처:

SW Expert Academy

나의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from collections import deque

for test_case in range(1, 11):
    T = int(input())
    
    data=deque(list(map(int,input().strip().split())))
    cycle1=15 #1~5의 합
    min_d=min(data)
    iter_min=min_d//15-1
    for i in range(8):
        data[i]-=iter_min*15
    done=False
    while not done:
        cnt=0
        for i in range(1,6):
            d=data.popleft()-i
            if d<=0:
                d=max(d,0)
                data.append(d)
                done=True
                break
            data.append(d)
    print(f'#{test_case}',end=' ')
    print(*data)
  • data에서 가장 작은 수를 기준으로, 모든 수가 30이하가 되도록 한다.
  • cycle이 8번 돌면, 모든 data에 -15가 되는 것과 같다. 또한 cycle이 처음 진행할 때와 동일한 순서로 진행되기 시작한다.
  • 종료 조건은 data 중 0이하의 값이 되는 수가 있으면 종료된다.
This post is licensed under CC BY 4.0 by the author.