하나하나 차근차근 뜯어보자.
- 1번부터 N번까지의 숫자가 담겨있는 바구니가 필요하다. 여기서 바구니는 list 형태로 받아줘야 할 것이다.
- M번동안 i와 j를 받아야 한다.
- 순서를 바꿔준다.
로 생각해 볼 수 있다.
예제와 같은 순서로 진행된다면
이런 식으로 진행될 것이다.
그렇다면 이렇게 아이디어를 생각해 볼 수 있다.
1. 바구니 개수 N과 반복 횟수 M을 각각 입력 받는다
2. numbers(임의의 이름)이라는 list 선언 후 1부터 N까지 값을 채워준다
3. M번 동안 i와 j를 입력 받는다
4.리스트 인덱스에 접근하기 위해 i-1을, j는 포함되어야 하므 로j-1+1=j를 range로 하여 numbers의 리스트를 슬라이싱한다
5. 슬라이싱한 값을 temp에 넣어두고 temp의 순서를 reverse 메서드로 바꿔준다(파이썬 최고)
6. 순서를 바꾼 값을 다시 numbers 리스트에 업데이트
N, M = map(int, input().split())
numbers = [i for i in range(1, N+1)]
for i in range(M):
j, k = map(int, input().split())
temp = numbers[j-1:k]
temp.reverse()
numbers[j-1:k] = temp
for i in range(N):
print(numbers[i], end=" ")
파이썬 내부 메소드를 잘 알고 있는 것, 배열의 활용이 중요하다고 다시 한 번 느끼는 문제였다.