본문 바로가기
Develop/Python + SWEA

[SW Expert Academy] 3499. 퍼펙트 셔플

by Tarra 2022. 2. 28.

3499. 퍼펙트 셔플


문제)

 

카드를 퍼펙트 셔플 한다는 것은, 카드 덱을 정확히 절반으로 나누고 나눈 것들에서 교대로 카드를 뽑아 새로운 덱을 만드는 것을 의미한다. 

정확한 방식은 다음 그림과 같다.

 

 

N개의 카드가 있는 덱이 주어질 때 이를 퍼펙트 셔플하면 어떤 순서가 되는지 출력하는 프로그램을 작성하라.

만약 N이 홀수이면, 교대로 놓을 때 먼저 놓는 쪽에 한 장이 더 들어가게 하면 된다.


[입력]

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 자연수 N(1 ≤ N ≤ 1,000)이 주어진다.

두 번째 줄에는 덱에 카드가 놓인 순서대로 N개의 카드 이름이 공백으로 구분되어 주어진다.

카드의 이름은 알파벳 대문자와 ‘-’만으로 이루어져 있으며, 길이는 80이하이다.

[출력]

각 테스트 케이스마다 주어진 덱을 퍼펙트 셔플한 결과를 한 줄에 카드 이름을 공백으로 구분하여 출력한다.

 

 

 

 

 

풀이)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
= int(input())
for _ in range(T):
 
    n = int(input())
    deck = list(map(str, input().split()))
 
    if n % 2:
        li1 = list(deck[:(n // 2+ 1])
        li2 = list(deck[(n // 2+ 1:])
 
        answer = []
        for i in range(n // 2):
            answer.append(li1[i])
            answer.append(li2[i])
 
        answer.append(li1[-1])
 
        print(f"#{_ + 1}"*answer)
 
    else:
        li1 = list(deck[:(n//2)])
        li2 = list(deck[(n//2):])
 
        answer = []
        for i in range(n // 2):
            answer.append(li1[i])
            answer.append(li2[i])
 
        print(f"#{_ + 1}"*answer)
cs

문제 출처 : https://swexpertacademy.com/main/main.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

※ SW Expert 아카데미는 원칙적으로 문제를 무단 복제하는 것을 금지합니다.

학습용으로 문제를 가져왔으나, 문제가 될 시 수정 및 삭제하겠습니다.

'Develop > Python + SWEA' 카테고리의 다른 글

[SW Expert Academy] 5097. 회전  (0) 2022.03.15
[SW Expert Academy] 12712. 파리퇴치3  (0) 2022.02.28
[SW Expert Academy] 11315. 오목 판정  (0) 2022.02.28
[python] Stack과 DFS  (0) 2022.02.27
[SW Expert Academy] 1224. 계산기3  (0) 2022.02.25