🌞Algorithm/🔥Baekjoon

[Baekjoon] 9492_Perfect Shuffle

뿌야._. 2025. 2. 24. 16:02
문제(출처: https://www.acmicpc.net/problem/9492)

< Perfect Shuffle >

 

문제 풀이 

 

인덱스를 활용하여 처음과 중간부터 하나씩 번갈아가며 출력한다.

 

my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class _9492_ { // Perfect Shuffle

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int num = 0;

		while ((num = Integer.parseInt(bf.readLine())) != 0) {
			String arr[] = new String[num];
			for (int i = 0; i < num; i++) {
				arr[i] = bf.readLine();
			}

			int x = 0, y = -1;
			if (num % 2 == 0) {
				y = num / 2;
			} else {
				y = (num / 2) + 1;
			}

			while (x < (num / 2) || y < num) {
				bw.write(arr[x++] + "\n");
				bw.write(arr[y++] + "\n");
			}
			if (num % 2 == 1) {
				bw.write(arr[x] + "\n");
			}
		}
		bw.flush();
	}
}

 

변수)
num : 카드의 수
arr : 카드 이름을 저장하는 배열
x, y : 인덱스

 

카드 수 num이 0이 아닐 때까지 입력받아 다음 과정을 반복한다.

 

1) num만큼 카드 이름을 입력받아 arr 배열에 저장

2) 인덱스를 0과 num/2로 지정 (만약 num 값이 홀수라면 (num/2)+1로 지정)

3) 각 인덱스에 해당하는 배열 값을 번갈아가며 출력