"Boldness has genius, power, and magic in it." - Johann Wolfgang von Goethe

SWEA

1225. [파이썬 S/W 문제해결 기본] 7일차 - 암호생성기

Toproot 2021. 3. 3. 20:42
728x90
728x90

 

🚛 파이썬 SW문제해결 기본 - 큐(Queue)

  • 주어진 N개의 수를 다음과 같은 조건을 통해 8가지 암호를 만드는 문제입니다.
  • 조건은 주어진 N개의 수를 큐(Queue)라고 생각하고 맨앞의 수에서 1~5를 순서대로
  • 뺀 후 큐의 맨 뒤에 append하는 싸이클입니다.

 

 

💡 아이디어

큐, 8개의 숫자 중 첫번째 숫자를 1~5씩 마이너스하는 싸이클을 돌며
8개의 한자리 수가 남을 때까지 반복하고 맨 마지막 자리가 0이면 종료

반복횟수가 정해지지 않았으므로 while을 사용해서 반복.
맨앞자리가 계속해서 뒤로 가므로 슬라이싱을 이용하여 배열을 다시 만들어줌.
맨 뒷자리가 0이 되었을때 break로 탈출.
while문 탈출할때 for문한번 나오고 또 나와야 하므로 check라는 종료조건 생성.

 

 

🎲 파이썬 코드

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

# TODO Solving Club 1225 암호 생성기

T = 10
for tc in range(1, T + 1):
    N = int(input())
    ARR = list(map(int, input().split()))
    check = 0
    while True:
        for i in range(5):
            ARR[0] -= i+1
            sub = ARR[1:]
            sub.append(ARR[0])
            ARR = sub
            if ARR[-1] <=0:
                ARR[-1] = 0
                check +=1
                break
        if check:
            break

    print("#{}".format(N), end=' ')
    print(*ARR)

* 제 코드가 정답은 아닙니다. 부족한 부분과 더 좋은 아이디어가 있으시면 댓글로 남겨주세요! :)

728x90
728x90