문제
SW Expert Academy의 문제는 해당 사이트에서 확인하실 수 있습니다.
풀이과정
문제를 요약하자면, 첫번째 숫자를 뽑아 minus의 숫자만큼 뺀 뒤 숫자 리스트의 맨 뒤에 다시 집어넣는 것을 총 5번 반복합니다. (즉, minus를 1
에서 5
가 될 때까지 반복하고, 다시 1
로 돌아옵니다.)
따라서 단순히 while문을 통해 맨 처음 것을 빼내고 minus
만큼을 뺀 뒤 다시 맨 뒤로 집어넣는 과정을 반복하였고, 사이클 동안 진행할 때, number
-minus
가 0보다 작거나 같은 경우 0을 맨 뒤에 집어넣고, 해당 리스트를 출력해주도록 구현하였습니다.
소스코드
def logic(numbers):
minus = 1
while True:
number = numbers.pop(0)
if number - minus <= 0:
numbers.append(0)
break
numbers.append(number - minus)
minus += 1
if minus > 5: # 한 사이클
minus = 1
return numbers
def print_list(test_case, numbers):
print("#{}".format(test_case), end = " ")
for number in numbers:
print(number, end=" ")
print()
for _ in range(10):
test_case = int(input())
numbers = list(map(int, input().split()))
numbers = logic(numbers)
print_list(test_case, numbers)