[알고리즘/SWEA] #3499 퍼펙트 셔플

JudyLia·2022년 2월 9일
0

알고리즘

목록 보기
30/61
post-thumbnail
  • 큐를 사용
package algorithm_lab.day05.q3;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

public class Solution {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		System.setIn(new FileInputStream("./src/algorithm_lab/day05/q3/input.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int test_case = Integer.parseInt(br.readLine());
		
		for(int t=1;t<=test_case;t++) {
			int size = Integer.parseInt(br.readLine());
			String[] s = br.readLine().split(" ");
			Queue<String> q1 = new LinkedList<String>();
			Queue<String> q2 = new LinkedList<String>();
			String[] answer = new String[size];
			
			for(int i=0;i<s.length;i++) {
				//문자열의 길이가 홀수인지 짝수인지 구별
				int n =0;
				if(s.length%2==0) n=s.length/2;
				else n=s.length/2+1;
				
				//앞의 반은 q1에 뒤의 반은 q2에 넣기
				if(i<n) {
					q1.add(s[i]);
				}else {
					q2.add(s[i]);
				}
			}
			
			//출력 q1과 q2를 번갈아가면서 출력하기
			sb.append("#").append(t).append(" ");
			
			for(int i=0;i<size;i++) {
				if(i%2==0) {
					sb.append(q1.poll()).append(" ");
				}else {
					sb.append(q2.poll()).append(" ");
				}
			}
			sb.append("\n");
			
		}
		System.out.print(sb.toString());
	}
}
  • 큐 미사용
package algorithm_lab.day05.q3;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution2 {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		System.setIn(new FileInputStream("./src/algorithm_lab/day05/q3/input.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int test_case = Integer.parseInt(br.readLine());
		
		for(int t=1;t<=test_case;t++) {
			int size = Integer.parseInt(br.readLine());
			String[] s = br.readLine().split(" ");
			
			//문자열의 길이가 홀수인지 짝수인지 구별
			int n =0;
			if(s.length%2==0) n=s.length/2;
			else n=s.length/2+1;
			
			sb.append("#").append(t).append(" ");
			for(int i=0;i<n;i++) {
				sb.append(s[i]).append(" ");
				if(i+n<s.length) sb.append(s[i+n]).append(" ");
			}
			sb.append("\n");
		}
		System.out.print(sb.toString());
	}
}
profile
안녕:)

0개의 댓글

관련 채용 정보