SWEA 1225. [S/W 문제해결 기본] 7일차 - 암호생성기
1사이클은 1감소, 2감소, 3감소, 4감소, 5감소이다.
가장 왼쪽에 수만 계산하여 뒤에 append한다.
가장 왼쪽에 수가 계산했을 때 0이하가 된다면 계산을 그만하고 0을 추가한 후 종료한다.
nums라는 queue에 입력받고 cnt의 초기값은 1로 설정한다.
그 이후 무한반복문을 실행하면서 nums의 가장 왼쪽값을 pop하여 계산한 후에 다시 이 값을 append하는 것을 기본으로 하고 문제를 푼다.
nums = deque(map(int,input().split()))
cnt = 1
while 1:
num = nums.popleft() # 가장 왼쪽 숫자 pop
num-= cnt # cnt만큼 감소
cnt를 1 증가시키고 6이 된다면 다시 cnt를 1로 바꿔준다. 이렇게 되면 1 사이클이 진행된것.
cnt+=1 # cnt 1증가
if cnt==6: # cnt가 6이 됐다면 다시 1로 바꾸어 1사이클 종료
cnt = 1
0이하면 nums 큐에 0을 추가하고 무한반복문을 종료한다.
if num<=0: # 0이하라면 0을 추가하고 반복문 종료
nums.append(0)
break
from collections import deque
T = 10
for _ in range(10):
test_case = int(input())
nums = deque(map(int,input().split()))
cnt = 1
while 1:
num = nums.popleft() # 가장 왼쪽 숫자 pop
num-= cnt # cnt만큼 감소
cnt+=1 # cnt 1증가
if cnt==6: # cnt가 6이 됐다면 다시 1로 바꾸어 1사이클 종료
cnt = 1
if num<=0: # 0이하라면 0을 추가하고 반복문 종료
nums.append(0)
break
nums.append(num) # 그게 아니라면 감소한 num 다시 nums에 append
print(f'#{test_case}', end=" ")
for i in range(8):
print(f'{nums[i]}', end=' ')
print()