백준알고리즘/구현
백준 알고리즘 10811번 [바구니 뒤집기] 파이썬
지웅쓰
2023. 4. 12. 00:43
https://www.acmicpc.net/problem/10811
10811번: 바구니 뒤집기
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2
www.acmicpc.net
이전 배열 문제랑 비슷한 형식
N : 번호가 적혀있는 바구니의 개수
M : 뒤집는 횟수
M에 따라 반복문을 돌려주고, 횟수마다 i, j 를 지정한다. i번째부터 j번째까지의 숫자를 역순으로 한다.
반복문 안에 반복문을 또 만드는데 여기서 횟수는 j - i + 1이다.
기존 i번째 숫자는 다른 곳에 저장해놨다가, j번째 바구니에 할당하고, i번째와 j번째 바구니의 순서를 바꾼다. 나는 주로 리스트를 만들 때 0을 포함해서 만들고 나중에 출력할 때 0을 제외하는 방식을 사용한다. 인덱스를 따로 1빼고 하는 것이 번거롭다.
n, m = map(int, input().split())
pocket = [i for i in range(0, n+1)]
for _ in range(m):
i, j = map(int, input().split())
r = j - i + 1
for k in range(r // 2):
temp = pocket[i]
pocket[i] = pocket[j]
pocket[j] = temp
i += 1
j -= 1
for i in pocket[1:]:
print(i, end = ' ')