[SWEA] 3499. 퍼펙트 셔플 _ Java

jii0_0·2022년 8월 18일
0

SW Expert Academy

목록 보기
18/33
post-thumbnail

퍼펙트 셔플 (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)] + " "); // 홀수일때는 앞덱스가 하나 많으니까 +1 해줌
				}
				System.out.print(cards[(N / 2)]); // 앞덱스의 마지막 숫자
			}
			System.out.println();
		}
	}
}
profile
느려도 꾸준히

0개의 댓글