Coding - Algo/Java
[SWEA] 3499:퍼펙트 셔플 (Java 자바)
jainn
2021. 8. 6. 10:35
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);
}
}
반응형