본문 바로가기
Coding Test (코딩 테스트)

코딩테스트 14일차(2025.01.30) - 백준10811번(바구니 뒤집기)

by BioLearner 2025. 1. 30.
반응형

 

첫째 줄N, M

N은 바구니의 개수를 의미하며, 각 바구니에는 1번부터 N번까지 번호가 순서대로 적혀 있다. M은 바꾸어야 하는 순서의 개수다.

두번째 줄 i, j

i번 바구니부터 j번 바구니까지의 순서를 역순으로 뒤집는다는 뜻

 

N, M = map(int, input().split())
values = list(range(1,N+1))

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

 

 

이 코드는 다음과 같은 방법으로 풀었다.

1. 바구니 갯수 N과 반복 횟수 M을 각각 입력 받는다.

2. 1~N까지의 리스트를 만듦(values)

3. i,j를 받는다. 

4. 이후 이 값을 리스트값을 역순으로 하는 [::-1]을 사용한다.

5. 결과값을 만든다.

결과: 정답

또 다른 풀이

 

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

하나하나 차근차근 뜯어보자. > 1. 1번부터 N번까지의 숫자가 담겨있는 바구니가 필요하다. 여기서 바구니는 list 형태로 받아줘야 할 것이다. > 2. M번동안 i와 j를 받아야 한다. > 3. 순서를 바꿔준

velog.io

N, M = map(int, input().split())
numbers = [i for i in range(1, N+1)]
    
for i in range(M):
    j, k = map(int, input().split())
    temp = numbers[j-1:k]
    temp.reverse()
    numbers[j-1:k] = temp
    
for i in range(N):
    print(numbers[i], end=" ")

이 코드는 [::-1]을 사용하지 않고 reverse()를 사용하여 문제를 풀었다. 나머지는 내가 만든 것과 크게 다른점없는 코드다.

 

고찰

reverse 함수는 자세하게 무엇일까?

reverse()는 원본 리스트를 직접 변경하며, 새로운 리스트를 생성하지 않으며, reverse()는 값을 반환하지 않고, 리스트 자체를 수정한다. 

 

reversed함수도 있는데 이것은 또 무엇일까?

반면, reversed() 함수는 주어진 객체를 뒤집은 반복자(iterator) 를 반환한다.  reverse와는 다르게 원본 리스트를 변경하지 않고 반복자를 반환하는 것으로 list()로 변환하면 새로운 리스트가 만들어진다. 

반응형