Baekjoon 3035号スキャナー-JAVA


https://www.acmicpc.net/problem/3035
質問する
尚根は毎朝英語の新聞を学校に持ってきて読んでいます.しかし、尚根の目はますます悪くなり、朝刊を見ることができなくなった.尚根はスキャナーで字を拡大して見ようとした.
ニュース記事は文字で構成されたRC行列で表すことができる.文字はアルファベット、数字、句点で構成されています.
スキャナはZRとZCを入力として受信する.これにより、スキャナは、11サイズの各文字をZR*ZCサイズに拡大して出力する.
新聞記事やZR、ZCがある場合は、スキャン結果を取得するプログラムを作成します.
入力
1行目はR,C,ZR,ZCである.RとCは1と50の間の整数であり、ZRとZCは1と5の間の整数である.
次のR行にニュースがあります.
しゅつりょく
スキャナでスキャンした結果をRZR行にわたってCZC文字を出力します.
入力例1
3 3 1 2
.x.
x.x
.x.
サンプル出力1
..xx..
xx..xx
..xx..
入力例2
3 3 2 1
.x.
x.x
.x.
サンプル出力2
.x.
.x.
x.x
x.x
.x.
.x.
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) throws IOException {
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);

		List<String> list = new ArrayList<>();
		String[] strArr = sc.nextLine().split(" ");
		int[] arr = new int[strArr.length];

		for (int i = 0; i < arr.length; i++)
			arr[i] = Integer.parseInt(strArr[i]);

		while (sc.hasNextLine()) {
			String book = sc.nextLine();
			if (book == "")
				break;
			list.add(book);
		}
		int x = arr[1] * arr[3] / list.get(0).length(); // x
		int y = arr[0] * arr[2] / list.size(); // y

		for (int i = 0; i < list.size(); i++) { // row
			String str = "";
			for (int j = 0; j < list.get(0).length(); j++) { // col
				for (int k = 0; k < x; k++) // copy
					str += list.get(i).charAt(j);
			}
			for (int k = 0; k < y; k++) { // copy
				System.out.print(str);
				if (k != y || k != 0) // \n
					System.out.println();
			}
		}
	}
}
  • 説明
  • 付加出力
  • 、レプリケーションコンセプト付き