백준 10811번 바구니 뒤집기
문제
1번부터 N번까지 번호가 적힌 바구니가 순서대로 일렬로 놓여 있다. 순서를 뒤집는 작업이 M번 주어지고(N, M은 1 이상 100 이하), 각 작업은 i j로 왼쪽에서 i번째부터 j번째 바구니까지의 순서를 역순으로 만든다는 뜻이다. 모든 작업이 끝난 뒤 왼쪽 바구니부터 적힌 번호를 공백으로 구분해 출력한다.
풀이
1부터 N까지 순서대로 담은 리스트를 만든다. 작업마다 구간을 슬라이싱하고 [::-1]로 뒤집은 값을 같은 구간에 다시 대입한다. 구간은 1번부터 세므로 start_idx-1:end_idx로 지정한다.
basket_cnt, action_cnt = map(int, input().split())
# 바구니 순서대로 리스트 생성
result = [i for i in range(1, basket_cnt+1)]
for _ in range(action_cnt):
start_idx, end_idx = map(int, input().split())
# 구간별로 슬라이싱하여 [::-1]로 역순 변경
result[start_idx-1:end_idx] = result[start_idx-1:end_idx][::-1]
print(' '.join(map(str, result)))