SWEA 3499 - 퍼펙트 셔플

Updated:

Java

3499 번 - 퍼펙트 셔플

문제

접근 방법

카드 놀이를 할 때 패를 섞는 것이라 생각하였다.
만약 카드가 5장이면, 3장 / 2장으로 나누어 3장 덱의 카드부터 카드를 섞는다.

구현

카드를 n/2씩 나누어 a[], b[]에 각각 저장한다.
만약 n이 홀수일 경우 modulo 2의 나머지를 a size()에 더하여 구분한다.

코드

import java.io.*;
import java.util.*;

class Solution {
	public static void main(String []args) throws Exception {  
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	int result = 0;
    	StringTokenizer st;
    	int tc = stoi(br.readLine());
    	StringBuilder sb = new StringBuilder();
    	
    	for(int idx = 1; idx <= tc; idx++) {
    		String a[],b[];
    		int n = stoi(br.readLine());
    		st = new StringTokenizer(br.readLine());
    		sb.append("#").append(idx).append(" ");
    		
			a = new String[n/2 + n % 2];
			b = new String[n/2];
			for(int i = 0; i < n/2 + n % 2; i++) {
				a[i] = st.nextToken();
			}
			for(int i = 0; i < n/2; i++) {
				b[i] = st.nextToken();
			}
			//한장씩 넣는다.  
			for(int i = 0; i < n/2; i++) {
				sb.append(a[i]).append(" ");
				sb.append(b[i]).append(" ");
			}
			// 홀 수일 경우 마지막에 한장 더 넣는다.  
			if(n % 2 == 1)
				sb.append(a[n/2]);
    		
    		System.out.println(sb);
    	}
    	
	}
	
	static int stoi(String str) {
    	return Integer.parseInt(str);
    }
}


총평

난이도

⭐★★★★

후기

개선할 점