※ 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 |