[백준/Python] 10811번 : 바구니 뒤집기
문제
https://www.acmicpc.net/problem/10811
- 특정 인덱스의 값들을 역순으로 정렬하는 문제
풀이
최초 풀이
파이썬 내장 함수인 extend(), reverse()를 활용하여 문제를 풀었다. 다른 풀이들을 참고해보니 슬라이싱을 활용하여 푸는 경우가 많은 것 같다. 내 생각에도 list slice를 활용해서 푸는 것이 더바람직한 것 같다.
N, M = map(int, input().split(" "))
ls = [num for num in range(1, N+1)]
for _ in range(M):
i, j = map(int, input().split(" "))
target = [ls[k] for k in range(len(ls)) if k >= i-1 and k <= j-1]
target.reverse()
temp = ls[:i-1]
temp.extend(target)
temp.extend(ls[j:])
ls = temp
print(*ls)
List slice를 활용한 문제 풀이
slice를 활용하면 코드가 무척 단순해진다. [::-1]를 활용하면 리스트를 역순으로 뒤집을 수 있다.
N, M = map(int, input().split(" "))
ls = [num for num in range(1, N+1)]
for _ in range(M):
i, j = map(int, input().split(" "))
ls[i-1:j] = ls[i-1:j][::-1]
print(*ls)
후기
리스트를 역순으로 뒤집는 방법은 기억해두는 것이 좋을 것 같다. 다음과 같이 for loop에서도 역순으로 값을 가져올 때 활용할 수 있다.
for i in ls[::-1]:
print(i)