[백준] 단어 나누기 (1251)

문제 설명

백준 1251번 문제 링크

입력 및 출력

» 입력

첫째 줄에 영어 소문자로 된 단어가 주어진다. 길이는 3 이상 50 이하이다.

» 출력

첫째 줄에 구하고자 하는 단어를 출력하면 된다.

예제 입출력(테스트케이스)

입력 출력
mobitel bometil

문제 풀이 (KOLTIN)

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val str = readLine()
    val list = mutableListOf<String>()

    for (i in 1 .. str.length - 2) {
        for (j in i + 1 .. str.length - 1) {
            list.add(
                str.substring(0 until i).reversed() +
                        str.substring(i until j).reversed() +
                        str.substring(j).reversed()
            )
        }
    }

    println(list.minOf { it })
}

문제 풀이 (SWIFT)

let str = Array(readLine()!)
let len = str.count

var ans = "-"
for i in 0..<len - 2 {
    for j in i + 1..<len - 1 {
        let first = Array(str[0...i].reversed())
        let second = Array(str[i + 1...j].reversed())
        let third = Array(str[j + 1..<len].reversed())
        let comb = (first + second + third)
            .map { String($0) }
            .joined()
        
        if ans == "-" || ans > comb {
            ans = comb
        }
    }
}

print(ans)

태그:

카테고리:

업데이트: