퍼펙트 셔플 (D3)
문제 링크
- 주어진 카드를 앞/뒤 로 나눠서 교대로 카드를 뽑아 새로운 순서를 만드는 문제
- N이 짝수일때
- 딱 절반으로 나눠지므로 N/2번 반복하여 i차례 카드와 i+N/2차례 카드를 순서대로 출력
- N이 홀수일때
- 교대로 놓을 때 먼저 놓는 쪽에 한장이 더 들어가므로
- N/2번 반복하되, i차례 카드와 i+N/2+1차례 카드를 순서대로 출력후
- 마지막 i+N/2번째 카드를 맨 뒤에 붙인다
Solution
package swea;
import java.util.Scanner;
public class p3499 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int t = 1; t <= T; t++) {
int N = sc.nextInt();
String[] cards = new String[N];
for (int i = 0; i < N; i++) {
cards[i] = sc.next();
}
System.out.printf("#%d ", t);
if ((N % 2) == 0) {
for (int i = 0; i < (N / 2); i++) {
System.out.print(cards[i] + " ");
System.out.print(cards[i + (N / 2)] + " ");
}
} else {
for (int i = 0; i < (N / 2); i++) {
System.out.print(cards[i] + " ");
System.out.print(cards[i + 1 + (N / 2)] + " ");
}
System.out.print(cards[(N / 2)]);
}
System.out.println();
}
}
}