https://www.acmicpc.net/problem/11866
from collections import deque
n,k = map(int,input().split())
numbers = deque([i for i in range(1,n+1)])
cnt=0
result="<"
for i in range(n*k):
cnt += 1
if cnt==k:
tmp=numbers.popleft()
result+=str(tmp)+", "
cnt=0
else:
tmp = numbers.popleft()
numbers.append(tmp)
result=result[:-2]
result+=">"
print(result)
cnt는 k까지 가는 횟수이다. 따라서 cnt가 k일때와 아닐때로 경우를 나눴다.
인덱스를 사용하면 머리아파지므로 맨 앞에서 작업을 할 수 있게 반복문을 순회할때마다 pop한 값을 append해서 진행하기로 했다. 리스트였다면 연산 시간이 길어졌을테지만 deque를 사용하므로 실행시간을 대폭 줄일 수 있었다.
cnt가 k보다 작을때 :
맨 앞 수를 pop하고 tmp에 저장한다음 "tmp, "형태로 result에 추가한다.
k번째 수를 만났으므로 cnt는 0으로 초기화한다.
cnt가 k일때 :
tmp값을 numbers 뒤에 추가한다.
'자기개발👨💻 > 코딩 알고리즘' 카테고리의 다른 글
[Java] 백준11654 아스키코드 (0) | 2021.09.28 |
---|---|
[python] 백준 2775 부녀회장이 될테야 (0) | 2021.07.29 |
[python] 백준10816 숫자 카드2 (0) | 2021.07.12 |
[python] 백준2164 카드2 (0) | 2021.07.08 |
[python] 백준10866 덱 (0) | 2021.07.07 |
[python] 백준2839 설탕 배달 (0) | 2021.07.06 |