본문 바로가기
[Baekjoon Online Judge] 풀이

[Baekjoon Online Judge] 백준 10812번: 바구니 순서 바꾸기 파이썬 풀이 - 알고리즘 코딩 문제 해설 python

by codeomni 2023. 4. 5.
반응형

 

안녕하세요.

이번 포스팅은 백준 온라인 저지의 10812 문제 풀이입니다.

문제 이름은 "바구니 순서 바꾸기" 입니다.

 

 

문제


문제 링크는 바로 밑의 링크를 확인해주세요.

https://www.acmicpc.net/problem/10812

 

10812번: 바구니 순서 바꾸기

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2

www.acmicpc.net

 

 

풀이


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. 출력 조건에 맞게 리스트를 출력합니다.

댓글