Development Palette
[D3] n3499_퍼펙트셔플 본문
두개의 Queue 를 사용해 저장해두고 번갈아가며 선입선출로 빼주면 방식
카드의 총 갯수가 홀수면 q1에서 한번더 카드를 뽑음
package com.ssafy.algo.w0806.n3499_퍼펙트셔플;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws NumberFormatException, IOException {
System.setIn(new FileInputStream("src\\com\\ssafy\\algo\\w0806\\n3499_퍼펙트셔플\\sample_input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(br.readLine());
for(int i=1;i<=t;i++) {
int n = Integer.parseInt(br.readLine());
Queue <String> q1 = new LinkedList<>();
Queue <String> q2 = new LinkedList<>();
StringTokenizer st = new StringTokenizer(br.readLine());
int temp = 0;
if(n%2 != 0) temp = 1;
//두개로 나누어 셔플할 갯수만큼 offer
for(int j=0; j<n/2+temp; j++) { // abc //카드의 총갯수가 홀수면 q1에서 한번 더 offer해줘야함
q1.offer(st.nextToken());
}
for(int j=0; j<n/2; j++) { //de
q2.offer(st.nextToken());
}
bw.append("#"+i+" ");
while(!q2.isEmpty() || !q1.isEmpty()) { //교차로 빼서 출력 저장
if(!q1.isEmpty()) bw.append(q1.poll()+" ");
if(!q2.isEmpty()) bw.append(q2.poll()+" ");
}
bw.append("\n");
bw.flush();
}
bw.close();
}
}
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
'Algorithm > SWEA' 카테고리의 다른 글
[D3] n6808_규영이와인영이의카드게임 (0) | 2021.08.14 |
---|---|
[D3] n9229 한빈이와 Spot Mart; (0) | 2021.08.10 |
[D4] n1218_괄호짝짓기 (0) | 2021.08.05 |
[D3] n1225_암호생성기 (0) | 2021.08.05 |
[D3]n1873 상호의 배틀필드 (0) | 2021.08.04 |
Comments