코딩테스트/SWEA

[SWEA] 3499 퍼펙트셔플

5월._. 2022. 2. 9.
728x90

1. 문제

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

2. 풀이

import java.util.Scanner;

public class D3_3499_퍼펙트셔플 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int T = in.nextInt();

        StringBuilder sb = new StringBuilder();
        for (int tc = 1; tc <= T; tc++) {
            sb.append("#").append(tc).append(" ");

            int N = in.nextInt();
            String[] cards = new String[N];

            //입력
            int idx = 0;
            for (int i = 0; i < N; i++) {
                cards[idx] = in.next();
                idx += 2;

                if (idx >= N) idx = 1;
            }

            //출력
            for (int i = 0; i < N; i++) {
                sb.append(cards[i]).append(" ");
            }

            sb.append("\n");
        }
        System.out.print(sb);
    }
}

반으로 갈라서 지그재그로 섞는 문제였는데, 굳이 반으로 가를 필요 없이 입력받을 때부터 섞어도 되겠단 생각이 들었다.

처음 인덱스를 0으로 시작해서 입력받을 때마다 +2 해준 뒤, 인덱스가 카드의 개수를 넘어가면 1로 초기화하고 다시 반복을 시작한다.

3. 결과

BufferedReader & StringTokenizer
Scanner

Scanner를 쓰면 확실히 코드가 간단해지긴 하는데, 역시 BufferedReader가 더 빠르다.

'코딩테스트 > SWEA' 카테고리의 다른 글

[SWEA] 1224 계산기3 - JAVA  (0) 2022.02.09
[SWEA] 1223 계산기2 - JAVA  (0) 2022.02.09
[SWEA] 1861 정사각형 방 - JAVA  (0) 2022.02.09
[SWEA] 1218 괄호짝찾기 - JAVA  (0) 2022.02.07
[SWEA] 5215 햄버거 다이어트 - JAVA  (0) 2022.02.07

댓글