알고리즘/SWEA
[파이썬] [SWEA] 3499. 퍼펙트 셔플
SBOX Learning by doing
2021. 2. 25. 23:15
반응형
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWGsRbk6AQIDFAVW
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
2. short code
T = int(input())
for tc in range(1, T+1):
N = int(input())
cards = list(input().split())
ans = []
l = 0
r = (N+1) // 2
for _ in range(N//2):
ans.append(cards[l])
ans.append(cards[r])
l, r = l+1, r+1
if N % 2:
ans.append(cards[N//2])
print('#{} {}'.format(tc, ''.join(map(str, ans))))
1. normal
T = int(input())
for tc in range(1, T+1):
N = int(input())
tmp_list = list(map(str, input().split()))
# 반 나누기
cnt = N//2
if N % 2: # 총 개수가 홀수일 때
tmp_list_A = tmp_list[0:cnt]
tmp_list_B = tmp_list[cnt:N+1]
else: # 총 개수가 짝수일 때
tmp_list_A = tmp_list[0:cnt]
tmp_list_B = tmp_list[cnt:N + 1]
result = []
while tmp_list_A:
# B 먼저 쌓기
result.append(tmp_list_B[-1])
tmp_list_B.pop()
# A 쌓기
result.append(tmp_list_A[-1])
tmp_list_A.pop()
# 순서 뒤집기
result.reverse()
# A는 끝났지만 B는 있다면
if tmp_list_B:
result.append(tmp_list_B[-1])
tmp_list_B.pop()
print("#{}".format(tc),end=" ")
for i in range(N):
print(result[i],end=" ")
print()
반응형