티스토리 뷰

728x90

 

풀이 및 소스코드

 

1 2 3 4 5 6

1 2 3 4 5

이 두가지 예시로 보면

1 -> 4 -> 2 -> 5 -> 3 -> 6  :  위 아래 위 아래 위 아래

1 -> 4 -> 2 -> 5 -> 3 : 위 아래 위 아래 위

홀수일 때는 아래 시작이 n/2, 짝수일 때는 아래 시작이 n/2-1

따라서 half_n의 설정과 홀수던 짝수던 동작이 동일하다가 홀수 일 때, 앞에 있는 카드가 맨 밑으로 한번더 오게 되는 부분만 if문으로 넣어주면 된다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Solution {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();
		
		int t = Integer.parseInt(br.readLine());
		for(int tc=1;tc<=t;tc++) {
			int n = Integer.parseInt(br.readLine());
			int hn = n%2==0? n/2-1:n/2;
			Queue<String> dq = new LinkedList<String>();
			st = new StringTokenizer(br.readLine());
			sb.append("#"+tc+" ");
			for(int i=0;i<n;i++) {
				if (i>hn) {
					sb.append(dq.remove()).append(" ").append(st.nextToken()).append(" ");
				}else {
					dq.add(st.nextToken());
				}
			}
			if(n%2==1) {
				sb.append(dq.remove());
			}
			sb.append("\n");
		}
		System.out.println(sb);
	}

}
반응형