2290번: LCD Test백준/문제2024. 3. 28. 13:16
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/2290
언어 : Kotlin
문제 설명 :
지민이는 새로운 컴퓨터를 샀다. 하지만 새로운 컴퓨터에 사은품으로 온 LC-디스플레이 모니터가 잘 안나오는 것이다. 지민이의 친한 친구인 지환이는 지민이의 새로운 모니터를 위해 테스트 할 수 있는 프로그램을 만들기로 하였다.
입력 :
첫째 줄에 두 개의 정수 s와 n이 들어온다. (1 ≤ s ≤ 10, 0 ≤ n ≤ 9,999,999,999)이다. n은 LCD 모니터에 나타내야 할 수 이며, s는 크기이다.
출력 :
길이가 s인 '-'와 '|'를 이용해서 출력해야 한다. 각 숫자는 모두 s+2의 가로와 2s+3의 세로로 이루어 진다. 나머지는 공백으로 채워야 한다. 각 숫자의 사이에는 공백이 한 칸 있어야 한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
2 1234567890 | -- -- -- -- -- -- -- -- | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- -- -- -- -- -- -- | | | | | | | | | | | | | | | | | | | | | | | | | | -- -- -- -- -- -- -- |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val (s, n) = readLine().split(" ").map { it.toInt() }
val lcd = Array(25) { Array(n.toString().length * (s + 3)) { " " } }
var row = 0
for (i in n.toString()) {
var column = 0
val num = numLine(i.toString())
// 지금부터 시행되는 if문-비교구문은 공통적으로 numLine()에서 항상 모든 숫자에서 " "이 아닌 부분에 해당한다.
if (num[0][1] == "-") {
for (j in row + 1 until row + 1 + s) {
lcd[column][j] = "-"
}
}
if (num[1][0] == "|") {
for (j in 1 until 1 + s) {
lcd[j][row] = "|"
}
}
if (num[1][2] == "|") {
for (j in 1 until 1 + s) {
lcd[j][row + s + 1] = "|"
}
}
if (num[2][1] == "-") {
for (j in row + 1 until row + 1 + s) {
lcd[1 + s][j] = "-"
}
}
column += 1 + s
if (num[3][0] == "|") {
for (j in column + 1 until column + 1 + s) {
lcd[j][row] = "|"
}
}
if (num[3][2] == "|") {
for (j in column + 1 until column + 1 + s) {
lcd[j][row + s + 1] = "|"
}
}
if (num[4][1] == "-") {
for (j in row + 1 until row + 1 + s) {
lcd[column + 1 + s][j] = "-"
}
}
row += s + 3
}
for (i in 0 until 2 * s + 3) {
for (j in 0 until row) {
bw.write(lcd[i][j])
}
bw.appendLine()
}
bw.flush()
bw.close()
}
fun numLine(num: String): Array<Array<String>> {
return when (num) {
"0" -> arrayOf(arrayOf(" ", "-", " "), arrayOf("|", " ", "|"), arrayOf(" ", " ", " "), arrayOf("|", " ", "|"), arrayOf(" ", "-", " "))
"1" -> arrayOf(arrayOf(" ", " ", " "), arrayOf(" ", " ", "|"), arrayOf(" ", " ", " "), arrayOf(" ", " ", "|"), arrayOf(" ", " ", " "))
"2" -> arrayOf(arrayOf(" ", "-", " "), arrayOf(" ", " ", "|"), arrayOf(" ", "-", " "), arrayOf("|", " ", " "), arrayOf(" ", "-", " "))
"3" -> arrayOf(arrayOf(" ", "-", " "), arrayOf(" ", " ", "|"), arrayOf(" ", "-", " "), arrayOf(" ", " ", "|"), arrayOf(" ", "-", " "))
"4" -> arrayOf(arrayOf(" ", " ", " "), arrayOf("|", " ", "|"), arrayOf(" ", "-", " "), arrayOf(" ", " ", "|"), arrayOf(" ", " ", " "))
"5" -> arrayOf(arrayOf(" ", "-", " "), arrayOf("|", " ", " "), arrayOf(" ", "-", " "), arrayOf(" ", " ", "|"), arrayOf(" ", "-", " "))
"6" -> arrayOf(arrayOf(" ", "-", " "), arrayOf("|", " ", " "), arrayOf(" ", "-", " "), arrayOf("|", " ", "|"), arrayOf(" ", "-", " "))
"7" -> arrayOf(arrayOf(" ", "-", " "), arrayOf(" ", " ", "|"), arrayOf(" ", " ", " "), arrayOf(" ", " ", "|"), arrayOf(" ", " ", " "))
"8" -> arrayOf(arrayOf(" ", "-", " "), arrayOf("|", " ", "|"), arrayOf(" ", "-", " "), arrayOf("|", " ", "|"), arrayOf(" ", "-", " "))
else -> arrayOf(arrayOf(" ", "-", " "), arrayOf("|", " ", "|"), arrayOf(" ", "-", " "), arrayOf(" ", " ", "|"), arrayOf(" ", "-", " "))
}
}
'백준 > 문제' 카테고리의 다른 글
4447번: 좋은놈 나쁜놈 (0) | 2024.03.28 |
---|---|
8949번: 대충 더해 (0) | 2024.03.28 |
11575번: Affine Cipher (0) | 2024.03.27 |
18312번: 시각 (0) | 2024.03.27 |
8892번: 팰린드롬 (0) | 2024.03.27 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!