coding test

[파이썬] 5097.회전

잔망루피 2021. 1. 25. 19:57

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.


N개의 숫자로 이루어진 수열이 주어진다. 맨 앞의 숫자를 맨 뒤로 보내는 작업을 M번 했을 때, 수열의 맨 앞에 있는 숫자를 출력하는 프로그램을 만드시오.

 
     



[입력]

첫 줄에 테스트 케이스 개수 T가 주어진다.  1<=T<=50

다음 줄부터 테스트 케이스의 첫 줄에 N과 M이 주어지고, 다음 줄에 10억 이하의 자연수 N개가 주어진다. 3<=N<=20, N<=M<=1000,

[출력]

각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 번호를 출력한다.

입력 출력
3
3 10
5527 731 31274
5 12
18140 14618 18641 22536 23097
10 23
17236 31594 29094 2412 4316 5044 28515 24737
#1 731
#2 18641
#3 2412

 

🎀 나의 풀이

 

T = int(input())

# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
  N, M = map(int, input().split())
  numbers= list(map(int,input().split()))
  for i in range(M):
    tem=numbers.pop(0)
    numbers.append(tem)

  print("#%d" %test_case, numbers[0])

 

리스트 numbers에서 0인덱스 값을 pop하고 추가하는 작업을 M번 반복한다.

반복문이 끝난 후 numbers[0]을 출력.

 

🎁 다른사람 풀이

 

TC = int(input())

for tc in range(1, TC+1):
    N,M = map(int, input().split())
    Data = list(map(int, input().split()))
    for i in range(M):
        Data.append(Data.pop(0))
    print(f'#{tc} {Data[0]}')

 

로직은 같고, pop한 값을 변수에 할당하지 않고 바로 리스트 Data에 추가한 점이 다르다.

 

# D2 5097 회전
for t in range(1, 1+int(input())):
    N, count = map(int, input().split())
    queue = input().split()
    # N번 반복하면 원상태이므로 나머지 연산
    count %= N
    #남은것은 인덱스가 된다.
    print('#{} {}'.format(t, queue[count]))

 

인덱스만 계산한 기발한 코드다,,

반응형

'coding test' 카테고리의 다른 글

[파이썬] 5099. 피자 굽기  (0) 2021.01.26
[파이썬] 5105. 미로의 거리  (0) 2021.01.25
[파이썬] 4881. 배열 최소 합  (0) 2021.01.20
[파이썬] 4880. 토너먼트 카드게임  (0) 2021.01.18
[파이썬] 4875. 미로  (0) 2021.01.15