[백준] 숫자놀이 (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: "")
}