https://www.acmicpc.net/problem/10804
card = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
for _ in range(10):
minNum, maxNum = map(int, input().split())
cnt = maxNum - minNum
if cnt%2 == 0:
cnt = cnt //2
else:
cnt = (cnt //2 ) +1
for i in range(cnt):
temp = card[minNum-1+i]
card[minNum-1+i] = card[maxNum-1-i]
card[maxNum-1-i] = temp
for j in card:
print(j,"", end = "")
20장의 카드 값을 list로 구현합니다.
cnt = (구간 끝 위치) - (구간 시작 위치)
card[x] <-> card[y]의 값이 변경되므로 한번에 두개의 값이 바뀝니다. 즉, 구간에 n개의 카드가 있다면 총 값이 변경되는 횟수는 cnt값에서 나누기 2를 한 값입니다. 홀수인 경우엔 몫+1 을 해주면됩니다.
이후 값을 바꾸고 출력하면 됩니다.