Algorism/Python

카드 역배치

aoaa 2022. 3. 11. 15:27

import sys
sys.stdin=open("input.txt", "rt")

a = list(range(21))

for _ in range(10):
    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)
for x in a:
    print(x, end=' ')

먼저 맨 위의 리스트와 같이 출력하기 위해 a라는 list를 만들어줍니다. range(21)로 하게되면 20 index까지 만들어지게 됩니다. 그리고 카드의 배치를 바꿀 첫 구간(s)과 끝(e) 구간을 정해준 뒤, 반복문을 실행합니다.

반복하고자 하는 구간에 대한 반복문을 만들어야 하는데, 끝과 첫구간을 뺀 값에서 1을 더한 뒤, 2로 나누게 된다면, 그 구간의 절반만큼 반복하게 됩니다.

a, e = e, a 식의 구성이 나오게 되면, 값이 reverse됩니다. 리스트에 0번 index에 0이 포함되어 있기 때문에, pop을 이용하여 0을 제거한다면, 카드를 reverse한 구간이 나오게 되어 프린트하면

 1 2 3 4 10 9 8 7 13 12 11 5 6 14 15 16 17 18 19 20

위와 같이 출력됩니다.

'Algorism > Python' 카테고리의 다른 글

사과나무(다이아몬드)  (0) 2022.03.14
격자판 최대합  (0) 2022.03.14
숫자열만 추출하기  (0) 2022.03.10
회문 문자열  (0) 2022.03.10
소수(에라토스테네스 체)  (0) 2022.03.08