코딩/공부

[Python] 백준 10804번 - 카드 역배치

취미니스트 2024. 2. 7. 18:10
728x90
반응형

문제

https://www.acmicpc.net/problem/10804

 
 

0부터 20까지 저장해놓은 리스트 생성(0은 사용하지 않음. 인덱스번호와 숫자를 일치시키기 위함).

10개의 숫자 세트를 리스트에 저장(2차원 형식).

nums = [i for i in range(21)]
pos = [list(map(int, input().split())) for _ in range(10)]

 

반복문 이용하여 숫자 세트 불러오기.

- 두 숫자의 차이 + 1 계산(숫자 개수)

- 반복문을 이용하여 해당 요소들 swap(교환).

for p in pos:
    diff = p[1] - p[0] + 1
    for i in range(diff // 2):
        nums[p[0]+i], nums[p[1]-i] = nums[p[1]-i], nums[p[0]+i]

 

리스트의 요소를 1번째부터 출력.

for n in nums[1:]:
    print(n, end=' ')

 

전체 코드

nums = [i for i in range(21)]
pos = [list(map(int, input().split())) for _ in range(10)]
for p in pos:
    diff = p[1] - p[0] + 1
    for i in range(diff // 2):
        nums[p[0]+i], nums[p[1]-i] = nums[p[1]-i], nums[p[0]+i]

for n in nums[1:]:
    print(n, end=' ')
728x90
반응형