알고리즘/SWEA

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

번잔중 2022. 8. 21. 20:21
 

SW Expert Academy

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

swexpertacademy.com

for t in range(1, 11):
    n = int(input())
    pwd = list(map(int, input().split()))
    while pwd[-1] != 0:
        for i in range(1, 6):
            pwd.append(pwd.pop(0) - i)
            if pwd[-1] <= 0:
                pwd[-1] = 0
                break
    print("#{}".format(t), *pwd)

- 큐의 특성을 이용해서 푸는 문제인데요.

- 파이썬은 pop에서도 인덱스 설정이 가능해서 쉽게 풀 수 있습니다.

- 우선 리스트의 마지막 원소가 0이 되기 전까지 반복할 수 있도록 만들고, 제일 앞에 위치한 값을 1부터 5까지 반복적으로 뺀 다음 맨 뒤로 보내줍니다.

- a b c d e … z인 경우 첫 시도에 a - 1을 맨 뒤로 보내고 그 다음에는 b - 2 …로 쭉 나가는겁니다. 만약 리스트의 마지막 원소가 0이거나 0보다 작다면 for문과 while문을 빠져나옵니다.

 

피드백은 언제나 환영합니다.