[Python] 백준 10812

백준 10812 장바구니 주문 변경
문제

도현이의 바구니는 총 N개이며 각 바구니는 1부터 N까지 순차적으로 번호가 매겨져 있습니다. 바구니가 늘어서 있고 가장 왼쪽 바구니를 1번째 바구니, 다음 바구니를 2번째 바구니, …, 가장 오른쪽 바구니를 N번째 바구니라고 합니다.

도현은 앞으로 바스켓M의 순서를 로테이션하려 한다. 도현이 바스켓 순서를 로테이션할 때 순서를 로테이션할 범위를 설정하고 그 범위 내에서 디폴트로 바스켓을 선택한다. 도현이 선택한 바스켓 범위가 Start, End이고 기본 바스켓이 Mid, Start, Start+1, …, Mid-1, Mid, Mid+1, …, End-1이면 순서는 The End 순서의 바구니는 Middle, Middle+1, …, End-1, End, Beginning, Beginning+1, …, Middle-1로 변경됩니다.

M으로 번호가 매겨진 바구니를 회전시킨 다음 맨 왼쪽 바구니부터 시작하여 바구니에 적힌 번호를 표시하는 프로그램을 작성하십시오.

바구니 옮기는 걸 좋아하는 도현이,,,

기입

N(1 ≤ N ≤ 100) 및 M(1 ≤ M ≤ 100)은 첫 번째 줄에 지정됩니다.

두 번째 줄부터 M-Lines는 순서를 바꾸는 바구니 제작 방법을 얻습니다. 이 방법은 i,j,k로 표현되며 왼쪽에서 i번째 바구니에서 j번째 바구니로 순서를 회전합니다. 즉 기본 바구니는 k번째 바구니입니다. (1≤i≤k≤j≤N)

도현은 입력으로 주어진 순서대로 바스켓의 순서를 회전시킨다.

누르다

모든 주문을 회전한 후 가장 왼쪽 바구니부터 시작하여 공백으로 구분하여 바구니에 적힌 주문을 발행합니다.

논평


[Python] 백준 10812 1


제출하다

n,m=map(int,input().split())
l=(x for x in range(n+1))
for x in range(m):
    b,e,m=map(int,input().split())
    s=l(0:)
    for y in range(e-m+1):
        l(b+y)=s(m+y)
    for y in range(m-b):
        l(b+e-m+1+y)=s(b+y)
print(*l(1:))


10 5
1 6 4
3 9 8
2 10 5
1 3 3
2 6 2

결과


[Python] 백준 10812 2
백준 10812 장바구니 주문 변경

#10812: 장바구니 주문 변경

도현이의 바구니는 총 N개이며 각 바구니는 1부터 N까지 순차적으로 번호가 매겨져 있습니다. 바구니가 정렬되어 가장 왼쪽 바구니가 첫 번째 바구니이고 다음 바구니가 두 번째 바구니입니다.

www.acmicpc.net