https://www.acmicpc.net/problem/10804
1부터 20까지의 수를 리스트에 넣은 후, 리스트의 각 인덱스에 접근해서 푸는 문제이다.
- 문제에서처럼 인덱스를 접근하기 위해 1부터가 아닌, 0부터 시작할수 있도록 리스트를 생성한다.
ex) [1, 2, 3, 4,...] 가 아닌 [0, 1, 2, 3, 4...]
- 시작점부터 끝점까지 위치를 서로 맞바꿔줄땐, 시작점부터 끝점까지의 개수만큼 반복해서 바꾸지않고, 그 절반만큼만 반복해서 바꿔준다.
예를 들어, 2번부터 5번까지 바꾼다고 하면,
2와5, 3과4 이렇게 두번만 바꿔준다.
즉, (끝점에서 시작점을 뺀 값+1)을 2로 나눈만큼 반복문을 돌리면 된다.
- 답을 출력하기 전 1번에서 언급한 첫번째 인덱스를 삭제해준다.
a = list(range(21)) # [0, 1, 2, 3, ... 19, 20]
for _ in range(10): # for 문에 _가 대입되면 아무 변수없이 진행되고 시간이 단축
s, e = map(int, input().split())
for i in range((e - s + 1) // 2):
a[s+i], a[e-i] = a[e-i], a[s+i]
a.pop(0) # 제일 앞자리를 빼줌. (del a[0]도 가능)
for x in a:
print(x, end=' ')