[백준] 폴리오미노 (1343)

문제 설명

백준 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)

태그:

카테고리:

업데이트: