백준/문제

31907번: GIST

스몰스테핑 2024. 9. 2. 17:29

문제 출처 : https://www.acmicpc.net/problem/31907

 

언어 : Kotlin

 

문제 설명 :

GIST 학생 홍보대사 지온나래는 GIST를 홍보하기 위해 큰 현수막을 준비하고 있다. 현수막에는 다음과 같은 그림이 들어갈 것이다.

G...
.I.T
..S.

 

정수 K가 주어지면, 주어진 그림을 $K배 확대한 그림을 예제 출력과 같이 출력하시오.
주어진 그림을 K배 확대한다는 것은 그림을 하나의 행렬로 보고 이를 확대한다는 것이다. 자세한 정의는 다음과 같다. 가로 길이가 M이고 세로 길이가 N인 그림은 N*M 행렬 $$X = \left(x_{ij}\right)$$로 나타낼 수 있으며, 이 행렬 X를 K배 확대한 행렬 Y는 KN*KM 행렬로, 다음과 같이 정의된다.
$$Y = \left(y_{ij}\right), y_{ij} = x_{\left\lfloor\frac{i + K - 1}{K}\right\rfloor\left\lfloor\frac{j + K - 1}{K}\right\rfloor} $$ 

 

입력 :

첫째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100)

 

출력 :

주어진 그림을 K배 확대한 그림을 예제 출력과 같이 출력한다.

 

제한 사항 :

  • 시간 제한 : 1초
  • 메모리 제한 : 1024MB

 

입출력 예 :

입력 출력
1 G...
.I.T
..S.
5 GGGGG...............
GGGGG...............
GGGGG...............
GGGGG...............
GGGGG...............
.....IIIII.....TTTTT
.....IIIII.....TTTTT
.....IIIII.....TTTTT
.....IIIII.....TTTTT
.....IIIII.....TTTTT
..........SSSSS.....
..........SSSSS.....
..........SSSSS.....
..........SSSSS.....
..........SSSSS.....

 

풀이 : 

import java.io.BufferedWriter
import java.io.OutputStreamWriter

fun main() = with(System.`in`.bufferedReader()) {
    val bw = BufferedWriter(OutputStreamWriter(System.out))

    val k = readLine().toInt()
    val gist = arrayOf("G...", ".I.T", "..S.")
    gist.forEachIndexed { i, s ->
        repeat(k) {
            bw.appendLine(gist[i].map { "$it".repeat(k) }.joinToString(""))
        }
    }

    bw.flush()
    bw.close()
}