알고리즘/인프런: 파이썬 알고리즘 문제풀이

탐색&시뮬레이션 문제 #3. 카드 역배치

bearbrick 2022. 5. 27. 15:47

*이 풀이는 인프런: 파이썬 알고리즘 문제풀이 강좌에 기반하였습니다.

 

 

 

내 풀이

 

1. 인덱스는 0부터 시작이지만, 카드는 1부터 시작한다는 점을 주의

2. 카드의 위치를 교환할 때, b-a+1만큼 교환하면 결국 다시 제자리이기 때문에 해당 범위의 절반만큼만 교환

 

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

card=[0]*20
for i in range(20):
    card[i]=i+1

for i in range(10):
    a,b=map(int,input().split())
    for i in range((b-a+1)//2):
        card[a-1+i],card[b-1-i]=card[b-1-i],card[a-1+i]

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

 

 

 

강사님 풀이

 

import sys
sys.stdin=open("input.txt","rt")
a=list(range(21)) #0부터 20까지 리스트화
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=' ')

 

 

 

배운 점

 

1. list(range(x)) : 0~x만큼 리스트화해준다.

2. pop(x) : 인덱스 x에 위치한 값을 빼낸다.