본문 바로가기
Algorithm Problem Solving/SW Expert Academy

[Python] SWEA 5097 회전

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 8. 8.
728x90
반응형

이번 포스팅에서 다룰 SW Expert Academy SWEA 5097 회전 문제는 N개의 숫자로 이루어진 수열의 맨 앞의 숫자를 맨 뒤로 보내는 작업을 M번 했을 때, 수열의 맨 앞에 있는 숫자를 출력하 문제이다. queue 큐 자료구조에 관한 문제로 난이도는 D2이다.

 

출처: https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIoJqqfYDFAWg

SW Expert Academy 5097 회전 문제 정보

자료구조 분류

- 큐 Queue

난이도

- D2

 

회전 문제 요약

  • 10억 이하의 자연수 N개로 이루어진 수열이 주어진다. (3N≤20)
  • 맨 앞의 숫자를 맨 뒤로 보내는 작업을 M번 했을 때, 수열의 맨 앞에 있는 숫자를 출력한다. (N≤M≤1000)

문제 풀이 과정

  1. deque 자료구조를 사용하기 위해 import한다.
  2. 데크의 맨 앞 원소를 삭제하고 맨 뒤에 삽입하는 작업을 M번 반복한다.
  3. 테스트 케이스 번호, 수열의 맨 앞에 있는 숫자를 출력한다.
코드 및 설명
  • q - N개의 숫자로 이루어진 수열을 저장한 데크
  • q.rotate(-M)는 q를 M 만큼 좌측으로 회전하는 함수로, 9~11번 줄 코드와 같은 기능이다.
# deque 자료구조를 사용하기 위해 선언
from collections import deque

for tc in range(int(input())):
    N, M = map(int, input().split())
    q = deque(list(map(int, input().split())))

    # q.rotate(-M) 와 같다
    for i in range(M):
        poppedNum = q.popleft()  # deque의 맨 앞 element를 삭제하고 반환
        q.append(poppedNum)  # deque의 맨 뒤로 삽입

    print("#%d %d" % (tc + 1, q.popleft()))

SW Expert Academy SWEA 5097 회전 문제는 queue 자료구조 활용 문제이며 파이썬으로 구현하였다. 난이도는 D2이고, 원형 큐를 구현하여 해결하려 했지만 잘 풀리지 않아 queue 큐 라이브러리를 활용하여 deque 데크 자료구조를 사용하여 해결하였다.

728x90
반응형

댓글