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