알고리즘/인프런: 파이썬 알고리즘 문제풀이
탐색&시뮬레이션 문제 #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에 위치한 값을 빼낸다.