


임시 변수에 바꿀 값을 저장하고 다시 반환하는 식으로 코드를 짰는데 효율면에서 좋지 않은 것 같다. 튜플 스왑을 활용한 효율적인 풀이법을 활용하는게 더 좋을 것 같다.
n, m = map(int, input().split())
basket = []
for i in range(1,n+1):
basket.append(i)
temp = 0
for _ in range(m):
i, j = map(int, input().split())
temp = basket[i-1]
basket[i-1] = basket[j-1]
basket[j-1] = temp
print(' '.join(map(str,basket)))
n, m = map(int, input().split())
basket = []
for i in range(1,n+1):
basket.append(i)
for _ in range(m):
i, j = map(int, input().split())
basket[i-1],basket[j-1] = basket[j-1],basket[i-1]
print(' '.join(map(str,basket)))


간단하게 리스트의 슬라이싱을 사용하여 풀이하였는데 reverse()를 사용해서 풀이하면 메모리를 절약할 수 있고, 성능 최적화 필요시에는 deque를 활용하는 것이 좋다고 한다.
n, m = map(int, input().split())
basket = [i for i in range(1,n+1)]
for _ in range(m):
i, j = map(int, input().split())
basket[i-1:j] = basket[i-1:j][::-1]
print(' '.join(map(str, basket)))
reverse() 사용reversed()는 iterator를 반환하기 때문에 list()를 사용하여 리스트로 반환해줘야 한다. n, m = mpa(int, input().split())
basket = [i for i in range(1, n+1)]
for _ in range(m):
i, j = map(int, input().split())
basket[i-1:j] = list(reversed(basket[i-1:j]))
print(' '.join(map(str, basket)))
deque 사용deque는 양쪽에서의 빠른 삽입/삭제가 가능하기 때문에 이를 활용하면 성능을 더 높일 수 있다. from collections import deque
n, m = map(int, input().split())
basket = deque(range(1, n+1)) # deque 사용
for _ in range(m):
i, j = map(int, input().split())
temp = list(basket)[i-1:j] # 부분 리스트 추출 후
temp.reverse() # 뒤집기
basket[i-1:j] = temp # 원래 리스트에 적용
print(' '.join(map(str, basket))) # 리스트 출력
튜플 스왑은 Python에서 두 변수의 값을 쉽게 교환하는 방법이다. 튜플 스왑은 스택 연산에서 자주 사용된다.
# 기본적인 튜플 스왑
a = 5
b = 10
a, b = b, a
print(a, b) # 10, 5
# 리스트 요소 간의 값 교환
arr = [1, 2, 3, 4]
arr[0], arr[1] = arr[1], arr[0]
print(arr) # [2, 1, 3, 4]
# 반복문을 이용한 다중 스왑
stack = [1, 2, 3, 4, 5]
stack[-1], stack[-2] = stack[-2], stack[-1]
print(stack) # [1, 2, 3, 5, 4]
remove()는 list.remove(value)의 형식으로 사용되며 리스트 안에 항목을 제거한다. 이때 항목을 값으로 삭제하며, 인덱스 번호로는 삭제하지 않는다. 또한, 삭제할 값이 리스트 안에 여러 개 존재한다면 첫번재 발생한 경우만 삭제한다.
set 정리는 여기로 -> 집합 set()
역순함수 정리는 여기로 -> 역순 reverse(), reversed()