반응형
안녕하세요.
이번 포스팅은 백준 온라인 저지의 10811번 문제 풀이입니다.
문제 이름은 "바구니 뒤집기" 입니다.
문제
문제 링크는 바로 밑의 링크를 확인해주세요.
https://www.acmicpc.net/problem/10811
풀이
1
2
3
4
5
6
7
|
N, M = map(int, input().split())
num = [i for i in range(1, N+1)]
for _ in range(M):
i, j = map(int, input().split())
num = num[:i-1]+num[i-1:j][::-1]+num[j::]
for i in num:
print(i, end=' ')
|
cs |
핵심: 리스트의 슬라이싱을 사용하여 해결합니다.
입력 받은 i의 이전 부분, i와 j 부분, j 이후 부분인 3부분으로 나눕니다.
1. N과 M을 공백 구분으로 입력받습니다.
2. 1부터 N까지의 바구니를 생성합니다.
1부터 시작하기 때문에 range의 범위를 1부터 N+1 까지로 지정합니다.
3. for문을 사용해서 M번 반복합니다.
4. 바구니의 자리인 i와 j를 입력 받습니다.
5. 입력 받은 i와 j 사이의 부분을 역순으로 변경합니다.
리스트의 슬라이싱 기능을 사용한 방법으로 3부분으로 나눕니다.
i 이전 부분 + i와 j 사이의 역순 부분 + j 이후 부분입니다.
6~7. 출력 조건에 맞게 리스트를 출력합니다.
댓글