[백준] 폴리오미노 (1343)
문제 설명
입력 및 출력
» 입력
첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 500이다.
» 출력
첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
XXXXXX | AAAABB |
XX.XX | BB.BB |
XXXX….XXX…..XX | -1 |
X | -1 |
XX.XXXXXXXXXX..XXXXXXXX…XXXXXX | BB.AAAAAAAABB..AAAAAAAA…AAAABB |
문제 풀이 (KOTLIN)
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
val str = readLine().toCharArray()
val iter = str.iterator()
var ans = ""
var count = 0
while (iter.hasNext()) {
if (iter.nextChar() == 'X')
count++
else {
if (count != 0 && count % 2 == 0) {
ans += writer(count)
count = 0
} else if (count != 0 && count % 2 != 0) {
println(-1)
return
}
ans += "."
}
}
if (count % 2 == 0) println(ans + writer(count))
else println(-1)
}
fun writer(count: Int): String {
return when {
count % 4 == 0 -> {
"AAAA".repeat(count / 4)
}
count % 4 == 2 -> {
"AAAA".repeat(count / 4) + "BB"
}
count % 2 == 0 -> {
"BB".repeat(count / 2)
}
else -> "-1"
}
}
문제 풀이 (KOTLIN)
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
val str = readLine()
.replace("XXXX", "AAAA")
.replace("XX", "BB")
println(if ('X' in str) "-1" else str)
}
문제 풀이 (SWIFT)
import Foundation
var poly = readLine()!
poly = poly.replacingOccurrences(of: "XXXX", with: "AAAA")
poly = poly.replacingOccurrences(of: "XX", with: "BB")
print(poly.contains("X") ? "-1" : poly)