일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준 벌집
- 전화영어비교
- 민병철유폰
- 파이썬
- 백준 2292번
- 백준 2738번
- 백준 행렬 덧셈
- 전화영어
- 백준파이썬
- 1316번
- 25206
- 백준 파이썬
- 화상영어
- 백준 25206번
- 랭디후기
- 백준2941번
- 무료수업후기
- 영어회화
- 그룹 단어 체커
- 랭디
- 백준
- 백준 2292번 파이썬
- YBM
- 백준 1316
- 백준크로아티아알파벳
- 백준 2292
- 너의 평점은
- 2941번
- 영어말하기
- 백준 25206
- Today
- Total
가영이의 스토리
[백준/Python] 백준 10811번 바구니 뒤집기 본문
🏆백준 10811번 - 바구니 뒤집기
https://www.acmicpc.net/problem/10811
10811번: 바구니 뒤집기
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2
www.acmicpc.net
✍️문제
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2번째 바구니, ..., 가장 오른쪽 바구니를 N번째 바구니라고 부른다.
도현이는 앞으로 M번 바구니의 순서를 역순으로 만들려고 한다. 도현이는 한 번 순서를 역순으로 바꿀 때, 순서를 역순으로 만들 범위를 정하고, 그 범위에 들어있는 바구니의 순서를 역순으로 만든다.
바구니의 순서를 어떻게 바꿀지 주어졌을 때, M번 바구니의 순서를 역순으로 만든 다음, 바구니에 적혀있는 번호를 가장 왼쪽 바구니부터 출력하는 프로그램을 작성하시오.
❓정답
n, m = map(int, input().split())
basket = [i for i in range(1, n+1)]
for _ in range(m):
i, j = map(int, input().split())
basket[i-1:j] = reversed(basket[i-1:j])
for i in basket:
print(i, end = " ")
💫 해설 및 한줄평
바구니 n개와 반복횟수 m을 받아온다.
그리고 basket에 각각 1번부터 n번까지의 바구니라고 지정해준다.
그리고 for문을 m번 반복하여 i와 j를 받아오고, 하나씩 받아올 때 마다 basket에 reversed를 취해준다.
이때 2번바구니부터 5번바구니를 역순으로 하려면 list에서는 1번째와 5번째까지라고 지정해줘야 각각 해당하는 바구니를 역순으로 변경한다. (list는 0부터 시작하고 마지막 숫자까지 사용하기때문)
따라서 basket에 i-1번째부터 j번째까지의 구간을 역순으로 지정해준 뒤 해당 자리에 입력해준다.
마지막으로 basket을 for문을 반복하고, end를 통해 공백으로 출력한다.
처음에는 바구니에 역순으로 넣는 코드를 [i-1:j:-1]을 통해 슬라이싱으로 표현했는데 그렇게하면 j가 i-1보다 작아져 오류가 날수있다고하더라.. 그래서 reversed를 넣어주니 훨 간단하고 보기좋네!
'코딩연습장 > 백준' 카테고리의 다른 글
[백준/Python] 백준 2675번 문자열 반복 (0) | 2023.08.23 |
---|---|
[백준/Python] 백준 10809번 알파벳 찾기 (0) | 2023.08.23 |
[백준/Python] 백준 3052번 나머지 (0) | 2023.08.22 |
[백준/Python] 백준 10813번 공 바꾸기 (0) | 2023.08.22 |
[백준/Python] 백준 10810번 공 넣기 (0) | 2023.08.21 |