Development Palette

[D3] n3499_퍼펙트셔플 본문

Algorithm/SWEA

[D3] n3499_퍼펙트셔플

징주 2021. 8. 6. 12:28

두개의 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();
	}

}

https://swexpertacademy.com/main/talk/solvingClub/problemView.do?contestProbId=AWGsRbk6AQIDFAVW&solveclubId=AXqjxFI6_SQDFATi&problemBoxTitle=08%EC%9B%9406%EC%9D%BC&problemBoxCnt=2&probBoxId=AXsYxB2aU1cDFARX 

 

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