최대 1 분 소요

카드 역배치

문제 정리

입력

5 10
9 13
1 2
3 4
5 6
1 2
3 4
5 6
1 20
1 20

처리 과정

  1. 카드 리스트 생성
  2. 구간의 src와 dest를 입력받기
  3. 주어진 구간에서 위치가 대칭인 두 수를 swap
  4. 카드 리스트는 인덱스 0부터 인덱스 20까지 총 21개였기 때문에 인덱스 0을 pop

출력

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

풀이

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

# 파이썬에서의 swap
# a,b=b,a

card = list(range(21)) # 0부터 20까지 리스트화

for _ in range(10): # 변수 없이 반복
    src,dest=map(int,input().split())

    # 주어진 구간에서 위치가 대칭인 두 수를 swap
    for i in range((dest-src+1)//2):
        card[src+i],card[dest-i] = card[dest-i], card[src+i]

# 맨 앞의 0을 버리고 출력해야 함
card.pop(0)

for x in card:
    print(x,end=' ')

정리

  • 리스트 생성 & 초기화: list(range(10))

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

  • 파이썬에서의 swap: a,b = b,a
  • 시작이 a, 끝이 b인 구간에서 reverse를 하려면 for문의 범위는 range((b-a+1)//2)
  • 리스트의 맨 앞을 pop: lst.pop(0)


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기

태그:

카테고리:

업데이트: