728x90
문제
풀이
/*
* 1. 테스트 케이스 T
* 2. 카드 개수 N
* 3. 카드 이름이 공백으로 구분
* 4. 홀수일 경우 앞에 있는 부분에 +1
* 5. 출력 "#" + tc + result
*
* >> N 크기 반의 큐 두개에 넣고 하나씩 번갈아 출력
* >> 원본을 변경할 건지 유지할 건지?
* >> 카드의 개수가 홀수일 때는 어떻게 할 건지?
*/
큐를 두개 정의해서 앞의 카드, 뒤의 카드로 나누어 저장했다 홀수일 경우에는 2로 나누면 정수가 나오기 때문에 +1을 한 뒤 2로 나누었다 arr 하나를 사용해서 풀어보려고 했는데 런타임에러...
코드
package com.ssafy.im;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class D3_3499_퍼펙트셔플 {
public static void main(String[] args) throws NumberFormatException, IOException {
File file = new File("D3_3499_퍼펙트셔플.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
//BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int tc = 1; tc <= T; tc++) {
int N = Integer.parseInt(br.readLine());
Queue<String> q1 = new LinkedList<>();
Queue<String> q2 = new LinkedList<>();
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 1; i <= N; i++) {
if(i<=(N+1)/2) q1.add(st.nextToken());
//N+1을 하는 이유: 홀수일 경우 하나를 더 넣기 위해 7>4까지 9>5까지 넣기
else q2.add(st.nextToken());
}
System.out.print("#" + tc);
for(int i = 0; i < N; i++) {
if(i%2==0) System.out.print(" " + q1.poll());
else System.out.print(" " + q2.poll());
}
System.out.println();
}
}
}
//런타임에러
//
//public static void main(String[] args) throws NumberFormatException, IOException {
// File file = new File("D3_3499_퍼펙트셔플.txt");
// BufferedReader br = new BufferedReader(new FileReader(file));
// //BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//
// int T = Integer.parseInt(br.readLine());
//
// for(int tc = 1; tc <= T; tc++) {
// int N = Integer.parseInt(br.readLine());
//
// String[] arr = new String[N];
//
// StringTokenizer st = new StringTokenizer(br.readLine());
// for(int i = 1; i <= N; i++) {
// if(i<=(N+1)/2) arr[(i-1)*2] = st.nextToken();
// else arr[(i-(N+1)/2)*2-1] = st.nextToken();
// }
//
// System.out.print("#" + tc);
// for(int i = 0; i < N; i++) {
// System.out.print(" " + arr[i]);
// }
// System.out.println();
//
// }
//}
결과
#자바 #java #swea #알고리즘
728x90
'알고리즘 > SWEA' 카테고리의 다른 글
[java][swea][d4] 1861. 정사각형 방 (0) | 2022.02.09 |
---|---|
[java][swea][d4] 1210. Ladder1 (0) | 2022.02.09 |
[java][swea][d1] 2072. 홀수만 더하기 (0) | 2022.01.22 |
[java][swea][d1] 2071. 평균값 구하기 (0) | 2022.01.22 |
[java][swea][d1] 2019. 더블더블 (0) | 2022.01.22 |