백준/문제
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()
}