바구니 뒤집기(10811번)

PearLine_Zero·2024년 3월 13일

하루에 1커밋 CodingTest

목록 보기
39/110
post-thumbnail
  • 티어 : Bronze 2
  • 정답여부 : 정답
  • 알고리즘 유형 : 구현, 시물레이션
  • 시간 제한 : 1초

💡문제

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2번째 바구니, ..., 가장 오른쪽 바구니를 N번째 바구니라고 부른다.

도현이는 앞으로 M번 바구니의 순서를 역순으로 만들려고 한다. 도현이는 한 번 순서를 역순으로 바꿀 때, 순서를 역순으로 만들 범위를 정하고, 그 범위에 들어있는 바구니의 순서를 역순으로 만든다.

바구니의 순서를 어떻게 바꿀지 주어졌을 때, M번 바구니의 순서를 역순으로 만든 다음, 바구니에 적혀있는 번호를 가장 왼쪽 바구니부터 출력하는 프로그램을 작성하시오.

💡입력

첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다.

둘째 줄부터 M개의 줄에는 바구니의 순서를 역순으로 만드는 방법이 주어진다. 방법은 i j로 나타내고, 왼쪽으로부터 i번째 바구니부터 j번째 바구니의 순서를 역순으로 만든다는 뜻이다. (1 ≤ i ≤ j ≤ N)

도현이는 입력으로 주어진 순서대로 바구니의 순서를 바꾼다.

💡출력

모든 순서를 바꾼 다음에, 가장 왼쪽에 있는 바구니부터 바구니에 적혀있는 순서를 공백으로 구분해 출력한다.

💡예제 입력 1

5 4
1 2
3 4
1 4
2 2

💡예제 출력 1

3 4 1 2 5

💡문제요약

공 바꾸기와 문제가 비슷한데 공을 바꿀때 바꾸고 나서 거꾸로 숫자을 나열하면 되는 문제로 즉 예를 들어서 1,2,3,4,5에서 1과 4를 입력받았으면 공의 위치를 1과 4를 바꿔주고 4,2,3,1로 바꿔주면서 왼쪽부터 나열해서 작성 1,3,2,4로 결과값을 나타내면 됨.

  • ex) -> 1,2,3,4,5 -> 1,3,2,4,5

💡알고리즘 설계

  1. 공의 배열크기 그리고 공을 바꾸는 횟수를 입력 받음
  2. 실제 바구니에 N으 길이만큼 공을 넣어줌
  3. M번 공을 바꿔주는데 공을 바꿀 위치 i와 j를 입력받음
  4. temp에 바꾼 공의 위치를 넣어주고 reverse() 함수를 써서 역순으로 바꿔준 다음 다시 temp를 bucket에다가 넣어줌
  5. bucket을 꺼내서 출력

✍ 파이썬의 reversed( )란?

reversed란 list(리스트)에 들어있는 요소들을 역순으로 출력이 가능한 함수

💡작성코드

  • python
 N , M = map(int, input().split()) 
bucket = list(range(1, N+1))
for _ in range(M):
      i, j = map(int, input().split())
      temp = bucket[i-1 : j]
      temp.reverse()
      bucket[i-1 : j] = temp
for k in (bucket):
      print(k)          

💡틀린 이유 or 수정할 부분

reverse( ) 함수를 사용하지 않고 슬라이싱 기법을 사용해서 다르게도 풀이해봄
변수명[::-1] 이거 역순으로 표시하고 싶을때 사용하는 슬라이싱 기법으로 잘 기억해두면 좋음!!

💡틀린 부분 수정 or 다른풀이

  • python
N , M = map(int, input().split()) 
bucket = list(range(1, N+1))
for _ in range(M):
      i, j = map(int, input().split())
      temp = bucket[i-1 : j]
      temp = temp[::-1]  # 슬라이싱을 사용하여 역순으로 변경
      bucket[i-1 : j] = temp
for k in (bucket):
      print(k)           

💡느낀점 or 기억할 정보

reverse() 역순 함수 잘 기억해야지!!

profile
https://baesaa0304.tistory.com 블로그 이사합니다~

0개의 댓글