jyamethyst21 님의 블로그
백준 10811번 - 바구니 뒤집기 (PYTHON 풀이) (with. reverse) 본문
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']
위 코드와 같이 문자도 역순으로 변경이 가능함을 알 수 있다.
'CODING 💻' 카테고리의 다른 글
| 백준 10871번 - X보다 작은 수 (PYTHON 풀이) (with. print) (0) | 2025.03.04 |
|---|---|
| 백준 10818번 - 최소, 최대 (PYTHON 풀이) (0) | 2025.03.04 |
| 백준 10810번 - 공 넣기 (PYTHON 풀이) (0) | 2025.03.03 |
| 백준 10809번 - 알파벳 찾기 (PYTHON 풀이) (with. append, join, extend 개념 설명까지) (0) | 2025.03.02 |
| 백준 10807번 - 개수 세기 (PYTHON 풀이) (0) | 2025.03.02 |
