jyamethyst21 님의 블로그

백준 10811번 - 바구니 뒤집기 (PYTHON 풀이) (with. reverse) 본문

CODING 💻

백준 10811번 - 바구니 뒤집기 (PYTHON 풀이) (with. reverse)

jyamethyst21 2025. 3. 4. 10:05

1) 문제

 

 

2) 풀이

 

처음 몇 개의 바구니가 있고 몇 번 순서를 바꿀 것인지 입력을 받는다.

그 다음 리스트를 생성하여 바구니의 넘버대로 리스트에 담는다.

두 번째 for 문에서 순서를 바꿀 횟수만큼 반복문을 돌며 교환할 바구니를 입력 받는다.

여기서 슬라이싱 기법을 활용하여 i-1부터 j-1까지 temp에 담는다. -1을 하는 이유는 인덱스는 0부터 시작하기 때문이다.

이후 파이썬의 아주 좋은 기능인 reverse() 함수를 사용하면 쉽게 역순으로 변경할 수 있게 된다. reverse()에 대한 설명은 하단의 간략하게 적도록 하겠다.

그 후 역순으로 정렬한 리스트를 최종 리스트인 ba에 넣으면 변경이 된다. 이를 출력하는 반복문을 돌리면 쉽게 풀 수 있다.

 

a,b=map(int,input().split())
ba=[]
for k in range(1,a+1):
    ba.append(k)
for l in range(b):
    i,j=map(int,input().split())
    temp=ba[i-1:j]
    temp.reverse()
    ba[i-1:j]=temp
for p in range(a):
    print(ba[p], end=" ")

 

 

 

과정은 이렇다. 다만 이렇게만 설명하면 어려울 수 있으니 예시를 들어보겠다.

a,b=map(int,input().split())
ba=[]
for k in range(1,a+1):
    ba.append(k)

만약 a,b를 5 1로 줬다면 ba는 ba=[1,2,3,4,5]가 될 것이다.

 

for l in range(b):
    i,j=map(int,input().split())
    temp=ba[i-1:j]
    temp.reverse()

i, j를 1 3으로 줬다고 가정하고 과정을 살펴보겠다.

temp=ba[0:3]이 되고 이는 곧 temp=ba[1,2,3]이 된다.

이것을 reverse() 함수를 거치면 temp=[3,2,1]이 된다.

 

ba[i-1:j]=temp

다음 코드를 실행시켜보겠다. 현재 temp=[3,2,1] 이다.

이를 ba[0:3]에 temp를 넣어보면 ba=[3,2,1,4,5]가 될 것이다. 이러한 프로세스로 실행이 된다.

 

 

⭐️추가 설명⭐️

1) reverse : 리스트의 값들을 역순으로 변경해주는 역할을 한다.

a=[1,2,3,4,5,6,7,8,9,10]
a.reverse()
print(a)

b=['a','b','c','d','e']
b.reverse()
print(b)

결과) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

         ['e', 'd', 'c', 'b', 'a']

 

 

위 코드와 같이 문자도 역순으로 변경이 가능함을 알 수 있다.