자기계발
백준
10811 · 바구니 뒤집기

백준 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)))

출처