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);
}
}
총평
난이도
⭐★★★★
후기
없
개선할 점
없