나를 기록하다
article thumbnail
반응형

1)

n, m = map(int, input().split())

# 바구니 순서 리스트 생성
basket = list(range(1, n+1))

for i in range(m):
    start, end = map(int, input().split())
    # 해당 구간 역순으로 바구니 순서 변경
    basket[start-1:end] = basket[start-1:end][::-1]

# 최종적으로 바뀐 바구니 순서 출력
for b in basket:
    print(b, end=" ")
  • 첫 번째 줄에서는 바구니의 총 개수 n과 바구니의 순서를 역순으로 만들 횟수 m을 입력받습니다.
  • 두 번째 줄부터 m개의 줄에서는 바구니의 순서를 역순으로 만드는 방법이 주어집니다.
    • start와 end는 바구니 순서를 역순으로 만들 범위를 뜻합니다.
    • start번 바구니부터 end번 바구니까지의 순서를 역순으로 만듭니다.
  • 바구니의 순서를 나타내는 리스트 basket를 생성합니다. range 함수를 사용하여 1부터 n까지의 수를 리스트로 만듭니다.
  • for문을 이용하여 m번 순서를 역순으로 바꿉니다.
    • basket[start-1:end]를 이용하여 해당 구간의 바구니를 잘라냅니다.
    • [::-1]을 이용하여 구간의 바구니 순서를 역순으로 변경합니다.
    • 다시 잘라낸 구간에 변경된 바구니 순서를 적용합니다.
  • for문을 이용하여 최종적으로 바뀐 바구니 순서를 출력합니다. end=" "를 사용하여 바구니 사이에 공백을 넣습니다.

 

2)

n, m = map(int, input().split())

basket = list(range(1, n+1))

for i in range(m):
    start, end = map(int, input().split())
    temp = basket[start-1:end]
    temp.reverse()
    basket[start-1:end] = temp

print(*basket)
  • 첫 번째 줄에서 n과 m을 입력받습니다.
  • 두 번째 줄에서 1부터 n까지의 번호가 순서대로 적힌 리스트인 basket을 만듭니다.
  • 이후 m번 반복하여 바구니 순서를 역순으로 만듭니다.
    • i번째 구간을 입력받아서 해당 구간의 바구니 순서를 temp 변수에 저장합니다.
    • temp를 역순으로 뒤집은 값을 다시 temp에 저장합니다.
    • 역순으로 바뀐 temp를 원래 리스트인 basket의 해당 구간에 할당합니다.
  • 최종적으로 *basket을 사용하여 리스트의 모든 요소를 출력합니다.

예를 들어, n이 5이고, m이 3이라면, basket은 [1, 2, 3, 4, 5]가 됩니다.

  • 첫 번째 구간은 2번째 바구니부터 4번째 바구니까지를 역순으로 만들어야 하므로, temp 변수에는 [2, 3, 4]가 저장됩니다.
  • temp를 뒤집은 값 [4, 3, 2]가 다시 temp에 저장됩니다.
  • basket[1:4] = [4, 3, 2]를 실행하여 [1, 4, 3, 2, 5]가 됩니다.
  • 두 번째 구간은 1번째 바구니부터 2번째 바구니까지를 역순으로 만들어야 하므로, temp 변수에는 [1, 4]가 저장됩니다.
  • temp를 뒤집은 값 [4, 1]가 다시 temp에 저장됩니다.
  • basket[0:2] = [4, 1]를 실행하여 [4, 1, 3, 2, 5]가 됩니다.
  • 세 번째 구간은 3번째 바구니부터 5번째 바구니까지를 역순으로 만들어야 하므로, temp 변수에는 [3, 2, 5]가 저장됩니다.
  • temp를 뒤집은 값 [5, 2, 3]이 다시 temp에 저장됩니다.
  • basket[2:5] = [5, 2, 3]를 실행하여 [4, 1, 5, 2, 3]이 됩니다.
반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...