으하하 공부일기
[SWEA] - 3499. 퍼펙트 셔플 (D3) 본문
[문제]
카드를 퍼펙트 셔플 한다는 것은, 카드 덱을 정확히 절반으로 나누고 나눈 것들에서 교대로 카드를 뽑아 새로운 덱을 만드는 것을 의미한다.
정확한 방식은 다음 그림과 같다.
N개의 카드가 있는 덱이 주어질 때 이를 퍼펙트 셔플하면 어떤 순서가 되는지 출력하는 프로그램을 작성하라.
만약 N이 홀수이면, 교대로 놓을 때 먼저 놓는 쪽에 한 장이 더 들어가게 하면 된다.
[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 자연수 N(1 ≤ N ≤ 1,000)이 주어진다.
두 번째 줄에는 덱에 카드가 놓인 순서대로 N개의 카드 이름이 공백으로 구분되어 주어진다.
카드의 이름은 알파벳 대문자와 ‘-’만으로 이루어져 있으며, 길이는 80이하이다.
[출력]
각 테스트 케이스마다 주어진 덱을 퍼펙트 셔플한 결과를 한 줄에 카드 이름을 공백으로 구분하여 출력한다.
문제 풀기
3499. 퍼펙트 셔플
[풀이]
import java.util.Scanner;
class Solution {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for(int tc=1; tc<=t; tc++) {
int n = sc.nextInt();
String a[] = new String[n];
String b[] = new String[n];
for(int i=0; i<n; i++) a[i] = sc.next();
int first = 0;
int mid = 0;
if(n%2==0) mid = n/2;
else mid = (n/2)+1;
for(int i=0; i<n; i++) {
if((i+1)%2!=0) {
b[i] = a[first];
first++;
}
else {
b[i] = a[mid];
mid++;
}
}
System.out.print("#" + tc + " ");
for(int i=0; i<n; i++) System.out.print(b[i] + " ");
System.out.println();
}
}
}
'SWEA > D3' 카테고리의 다른 글
[SWEA] - 3809. 화섭이의 정수 나열 (D3) (0) | 2022.05.11 |
---|---|
[SWEA] - 3750. Digit sum (D3) (0) | 2022.05.11 |
[SWEA] - 3456. 직사각형 길이 찾기 (D3) (0) | 2022.05.11 |
[SWEA] - 3431. 준환이의 운동관리 (D3) (0) | 2022.05.11 |
[SWEA] - 3408. 세가지 합 구하기 (D3) (0) | 2022.05.10 |