알고리즘/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()

 

 

반응형