코딩/공부

[Python] 백준 10811번 - 바구니 뒤집기

취미니스트 2023. 10. 11. 17:20
728x90
반응형

문제

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


n과 m에 해당하는 정수 두 개를 입력받음

0부터 n까지의 숫자를 저장하고 있는 리스트 생성 (바구니 번호와 리스트 번호 일치시키기 위함)

n, m = list(map(int, input().split()))
l = [i for i in range(n+1)]

m번 반복하여 진행

i, j에 해당하는 두 개의 정수 입력받음

i번째부터 j번째까지의 중앙지점을 찾음

i번째부터 중앙 지점까지 반복해가며 부분 리스트(i ~ j 번째까지)의 요소의 앞과 뒤의 요소를 바꿔 역순으로 배열

- 예) i: 1, j: 4

[1] <-> [4] 

[2] <-> [3]

for _ in range(m):
    i, j = list(map(int, input().split()))
    end = (i + j + 1) // 2
    n = 0
    for idx in range(i, end):
        l[idx], l[j-n] = l[j-n], l[idx]
        n += 1

리스트의 1번째 요소부터 출력

for v in l[1:]:
    print(v, end=' ')

전체 코드

n, m = list(map(int, input().split()))
l = [i for i in range(n+1)]
for _ in range(m):
    i, j = list(map(int, input().split()))
    end = (i + j + 1) // 2
    n = 0
    for idx in range(i, end):
        l[idx], l[j-n] = l[j-n], l[idx]
        n += 1
for v in l[1:]:
    print(v, end=' ')
728x90
반응형