[파이썬/python] 백준 10811번 : 바구니 뒤집기 (🥉2)

 

풀이1

N,M = map(int,input().split())

array = [i for i in range(1,N+1)]

for _ in range(M):
    i,j = map(int,input().split())
    array[i-1:j] = array[i-1:j][::-1]
print(*array)

풀이2(무식하게 푼 방법;;;;;;)

N,M = map(int,input().split())

array = [i for i in range(1,N+1)]
add = 0
for _ in range(M):
    i,j = map(int,input().split())
    for _ in range(i+j//2):
        array[i-1+add],array[j-1-add] = array[j-1-add],array[i-1+add]
        add += 1
        if add >= (len(array[i-1:j]))//2:
            add = 0
            break
print(*array)

맨 처음에 갑자기 list[n:m][::-1] 이 형태가 기억이 안 나서 list[m:n:-1] 이런 형태로 풀려고 하다가 안 돼서 무식하게 풀었다;;

다시 기억이 나서 다시 풀었다.

그동안 포트폴리오 때문에 바빠서 코테문제를 열심히 안 풀었더니 기억이 휘발된다..ㅠㅠ

그래도 몇 개 푸니까 다시 감이 돌아온다...

쉬운 문제만 풀지 말고 어려운 문제도 빨리 풀어야지

 

일단 목표는 자꾸 쉬운 단순 구현문제만 풀지 말고,

백준 문제를 단계별로 풀어보기를 순차적으로 풀면서 알고리즘과 자료구조를 익혀야겠다.

어렵고 난이도가 높다고 다른 단계의 쉬운 문제로 넘어가지 말고 어려워도 무조건 다 풀고 넘어가야겠다.

comment