1755번: 숫자놀이백준/문제2024. 1. 29. 12:15
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/1755
언어 : Kotlin
문제 설명 :
79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 먼저 온다.
문제는 정수 M, N(1 ≤ M ≤ N ≤ 99)이 주어지면 M 이상 N 이하의 정수를 숫자 하나씩 읽었을 때를 기준으로 사전순으로 정렬하여 출력하는 것이다.
입력 :
첫째 줄에 M과 N이 주어진다.
출력 :
M 이상 N 이하의 정수를 문제 조건에 맞게 정렬하여 한 줄에 10개씩 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
8 28 | 8 9 18 15 14 19 11 17 16 13 12 10 28 25 24 21 27 26 23 22 20 |
풀이 :
import java.io.BufferedWriter
import java.io.OutputStreamWriter
lateinit var result: ArrayList<Pair<Int, String>>
fun main() = with(System.`in`.bufferedReader()) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
result = arrayListOf()
val (a, b) = readLine().split(" ").map { it.toInt() }
(a..b).forEach {
val (num, str) = numPairString(it)
result += Pair(num, str)
}
result.sortedBy { it.second }.map { it.first }.chunked(10).forEach {
bw.appendLine(it.joinToString(" "))
}
bw.flush()
bw.close()
}
fun numPairString(num: Int): Pair<Int, String> {
val sb = StringBuilder()
val arr = arrayOf("zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine")
num.toString().chunked(1).also { list ->
val converted = list.map { arr[it.toInt()] }
sb.append(converted.joinToString(" "))
}
return Pair(num, sb.toString())
}
'백준 > 문제' 카테고리의 다른 글
1356번: 유진수 (0) | 2024.01.31 |
---|---|
7490번: 0 만들기 (1) | 2024.01.30 |
3062번: 수 뒤집기 (1) | 2024.01.26 |
12919번: A와 B 2 (1) | 2024.01.25 |
11816번: 8진수, 10진수, 16진수 (1) | 2024.01.24 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!