Python/백준
🔄 백준 10811 - '바구니 뒤집기' 문제 풀이 가이드#Python
고발초이이
2024. 6. 3. 15:13
반응형
SMALL
🧩 문제 이해하기
상상해봐요! 여러분 앞에 일렬로 놓인 바구니들이 있어요. 각 바구니에는 번호가 적혀 있죠. 우리의 임무는:
- 특정 구간의 바구니들을 뒤집기
- 여러 번의 뒤집기 작업 후, 최종 바구니 순서 확인하기
🔧 필요한 파이썬 도구들
1. 📋 리스트 (List)
바구니들을 표현해요.
baskets = [1, 2, 3, 4, 5] # 5개의 바구니
2. ✂️ 슬라이싱 (Slicing)
바구니의 특정 구간을 선택하고 뒤집을 때 사용해요.
baskets[1:4] = [4, 3, 2] # 2번째부터 4번째까지 바구니를 뒤집어요
3. 🔄 역순 (Reverse)
선택한 구간을 뒤집을 때 사용해요.
segment = [1, 2, 3]
reversed_segment = segment[::-1] # [3, 2, 1]
🚀 문제 해결 단계
- 초기 바구니 상태 만들기
- 뒤집기 작업 수행하기
- 최종 바구니 상태 확인하기
💻 파이썬 코드로 구현하기
# 바구니 개수(N)와 뒤집기 횟수(M) 입력받기
N, M = map(int, input().split())
# 1. 초기 바구니 상태 만들기
baskets = list(range(1, N+1))
# 2. 뒤집기 작업 수행하기
for _ in range(M):
i, j = map(int, input().split())
baskets[i-1:j] = baskets[i-1:j][::-1]
# 3. 최종 바구니 상태 확인하기
print(' '.join(map(str, baskets)))
🧠 코드 설명
N, M = map(int, input().split())
: 바구니 개수와 뒤집기 횟수를 입력받아요.baskets = list(range(1, N+1))
: 1부터 N까지 번호가 매겨진 바구니를 만들어요.for _ in range(M):
: M번 뒤집기 작업을 반복해요.i, j = map(int, input().split())
: 뒤집을 구간의 시작(i)과 끝(j)을 입력받아요.baskets[i-1:j] = baskets[i-1:j][::-1]
: i부터 j까지의 바구니를 뒤집어요.print(' '.join(map(str, baskets)))
: 최종 바구니 상태를 출력해요.
🌟 예제로 이해하기
입력 예시:
5 3
1 2
3 4
1 5
과정 설명:
- 초기 상태: [1, 2, 3, 4, 5]
- 1~2 뒤집기: [2, 1, 3, 4, 5]
- 3~4 뒤집기: [2, 1, 4, 3, 5]
- 1~5 뒤집기: [5, 3, 4, 1, 2]
출력 예시:
5 3 4 1 2
💡 팁
- 파이썬에서 인덱스는 0부터 시작해요. 그래서 i-1을 사용했답니다!
[::-1]
은 "처음부터 끝까지, 거꾸로" 라는 의미예요. 아주 유용한 파이썬 트릭이죠!- 리스트 조작은 데이터 처리에서 매우 중요해요. 이 문제를 통해 리스트 다루는 실력이 늘어날 거예요!
🎉 마무리
이렇게 하면 바구니 뒤집기 게임을 파이썬으로 구현할 수 있어요!
이 문제를 통해 리스트 조작과 슬라이싱 사용법을 익혔네요.
여러분도 이제 복잡한 리스트 조작을 할 수 있는 실력자가 되었어요! 🏆🎊
반응형
LIST