본문 바로가기
알고리즘?/기본3 탐색&시뮬레이션(string, 1차원 2차원 리스트 탐색)

3. 카드 역배치(정올 기출) (pop)

by 몰라닉네임 2023. 5. 8.

[문제 설명]

1. 두 변수의 값을 교환

2. a=list(range(21)) #[1, 2, 3, ...20]

*두 변수의 값을 교환

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

a, b=map(int, input().split())

print('a:%d b:%d' %(a, b))

a, b=b, a

print('a:%d b:%d' %(a, b))

pop()

a=list(range(10))
print(a)

a.pop()
print(a)

a.pop(0)
print(a)

a.pop(3)
print(a)

 


*본 문제는 인프런 김태원 강사님의 파이썬 알고리즘 문제풀이 강의에 기반합니다.  

 

[문제 점수계산 ]

1부터 20까지 숫자가 하나씩 쓰인 20장의 카드가 아래 그림과 같이 오름차순으로 한 줄로 놓여있다.

각 카드의 위치는 카드 위에 적힌 숫자와 같이 1부터 20까지로 나타낸다. 

 

이제 여러분은 다음과 같은 규칙으로 카드의 위치를 바꾼다: 구간 [a,b] (단, 1<=a<=b<=20)가 주어지면 위치 a부터 위치 b까지의 카드를 현재의 역순으로 놓는다.

예를 들어, 현재 카드가 놓인 순서가 오름차순으로 정렬되어 있고 구간이 [5:10]으로 주어진다면, 위치 5부터 위치 10까지의 카드를 역순으로하여 10,9,8,7,6,5로 놓는다.

 

이 상태에서 구간 [9,13]이 다시 주어진다면 위치 9부터 13까지의 카드 6,5,11,12,13을 역순으로 하여 13, 12, 11, 5, 6으로 놓는다. 

 

5 10

9 13

1 2

3 4

5 6

1 2

3 4

5 6

1 20

1 20

 

-출력예제1

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

 

 

풀이

인덱스를 바꾸는 방법

for i in range((e-s+1)//2):
        a[s+i], a[e-i]=a[e-i], a[s+i]

 

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

a=list(range(21))

# for_ 변수없이 반복하는 법

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]
print(a)

#a.pop(인덱스번호)
a.pop(0)
for x in a:
    print(x, end=' ')