[백준] 숫자놀이 (1755)

문제 설명

백준 1755번 문제 링크

입력 및 출력

» 입력

첫째 줄에 M과 N이 주어진다.

» 출력

M 이상 N 이하의 정수를 문제 조건에 맞게 정렬하여 한 줄에 10개씩 출력한다.

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

입력 출력
8 28 8 9 18 15 14 19 11 17 16 13
12 10 28 25 24 21 27 26 23 22
20

문제 풀이 (KOTLIN)

fun main(args: Array<String>) = with(System.`in`.bufferedReader()){
    val (M, N) = readLine().split(" ").map { it.toInt() }

    val chToStr = { ch: Char ->
        when (ch) {
            '1' -> "one"
            '2' -> "two"
            '3' -> "three"
            '4' -> "four"
            '5' -> "five"
            '6' -> "six"
            '7' -> "seven"
            '8' -> "eight"
            '9' -> "nine"
            else -> "zero"
        }
    }

    (M..N)
        .toMutableList()
        .sortedWith { left, right ->
            val leftString = left.toString().map { chToStr(it) }.joinToString("")
            val rightString = right.toString().map { chToStr(it) }.joinToString("")

            when {
                leftString < rightString -> -1
                leftString > rightString -> 1
                else -> 0
            }
        }
        .forEachIndexed { index, i ->
            if ((index + 1) % 10 != 0) print("$i ")
            else println("$i ")
        }

}

문제 풀이 (KOTLIN)

fun main(args: Array<String>) = with(System.`in`.bufferedReader()){
    val (M, N) = readLine().split(" ").map { it.toInt() }

    val chToStr = { ch: Char ->
        when (ch) {
            '1' -> "one"
            '2' -> "two"
            '3' -> "three"
            '4' -> "four"
            '5' -> "five"
            '6' -> "six"
            '7' -> "seven"
            '8' -> "eight"
            '9' -> "nine"
            else -> "zero"
        }
    }

    (M..N)
        .toMutableList()
        .map { Pair(it, it.toString().map(chToStr).joinToString("")) }
        .sortedBy { it.second }
        .forEachIndexed { index, i ->
            if ((index + 1) % 10 != 0) print("${i.first} ")
            else println("${i.first} ")
        }

}

문제 풀이 (KOTLIN)

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val (M, N) = readLine().split(" ").map { it.toInt() }
    val chToStr = "zero one two three four five six seven eight nine".split(" ")

    println(
        (M..N)
            .sortedBy {
                it.toString()
                    .map { ch -> chToStr[ch.toInt() - 48] }
                    .joinToString("")
            }
            .chunked(10)
            .joinToString("\n") { it.joinToString(" ") }
    )
}

문제 풀이 (SWIFT)

func compareInt(n1: Int, n2: Int) -> Bool {
    let c1 = String(n1).map { map[Int(String($0))!]! }.joined(separator: " ")
    let c2 = String(n2).map { map[Int(String($0))!]! }.joined(separator: " ")

    return c1 < c2
}

let map = [0 : "zero", 1 : "one", 2 : "two", 3 : "three", 4 : "four", 5 : "five", 6 : "six", 7 : "seven", 8 : "eight", 9 : "nine"]
let MN = readLine()!.split(separator: " ").map { Int($0)! }
let list = Array(MN[0]...MN[1]).sorted(by: compareInt(n1:n2:))

for i in 0..<list.count {
    if i != 0 && i % 10 == 0 {
        print()
    }
    print("\(list[i]) ", terminator: "")
}

태그:

카테고리:

업데이트: