3076번: 상근이의 체스판백준/문제2024. 4. 2. 13:04
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/3076
언어 : Kotlin
문제 설명 :
상근이는 체스판을 만들려고 한다.
체스판은 검정칸과 흰칸으로 이루어져 있다. 가장 왼쪽 위칸의 색은 검정색이고, 나머지 색은 검정과 흰색이 번갈아가면서 등장한다. 검정색은 'X'로, 흰색은 '.'로 표시한다.
상근이의 체스판은 R행 * C열로 이루어져 있어야 한다. 또, 각각의 행의 높이는 문자 A개만큼 이며, 각각의 열의 너비는 문자 B개 만큼이다. 예제 출력을 보고 이해하면 쉽다.
R, C, A, B가 주어졌을 때, 상근이의 체스판을 출력하는 프로그램을 작성하시오.
입력 :
첫째 줄에 두 양의 정수 R과 C가 주어진다. (1 ≤ R, C ≤ 10)
둘째 줄에 두 양의 정수 A와 B가 주어진다. (1 ≤ A, B ≤ 10)
출력 :
출력은 R * A행 C * B열로 이루어져 있어야 하며, 문제에서 설명한 상근이의 체스판을 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
2 4 2 2 |
XX..XX.. XX..XX.. ..XX..XX ..XX..XX |
5 5 2 3 |
XXX...XXX...XXX XXX...XXX...XXX ...XXX...XXX... ...XXX...XXX... XXX...XXX...XXX XXX...XXX...XXX ...XXX...XXX... ...XXX...XXX... XXX...XXX...XXX XXX...XXX...XXX |
풀이 :
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 (r, c) = readLine().split(" ").map { it.toInt() }
val (a, b) = readLine().split(" ").map { it.toInt() }
val line = StringBuilder()
val sb1 = StringBuilder()
val sb2 = StringBuilder()
repeat(a) {
var temp = c
while (temp > 0) {
temp--
sb1.append("X".repeat(b))
sb2.append(".".repeat(b))
if (temp <= 0) break
temp--
sb1.append(".".repeat(b))
sb2.append("X".repeat(b))
}
if (it < a) {
sb1.append("\n")
sb2.append("\n")
}
}
for (i in 1 .. r) {
line.append(if (i % 2 != 0) sb1.toString() else sb2.toString())
}
bw.write(line.toString())
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
2684번: 동전 게임 (0) | 2024.04.02 |
---|---|
20944번: 팰린드롬 척화비 (0) | 2024.04.02 |
1380번: 귀걸이 (0) | 2024.04.01 |
3023번: 마술사 이민혁 (0) | 2024.04.01 |
29699번: Welcome to SMUPC! (0) | 2024.04.01 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!