-
[백준] 2908번 : 상수 - 코틀린(kotlin)알고리즘/백준 2022. 10. 29. 00:01
https://www.acmicpc.net/problem/2908
문제 해석
같지 않은 세 자릿수 2개가 주어집니다.
0이 포함되어 있지 않으며 거꾸로 읽었을 때 큰 수를 출력하세요.
문제 풀이 전 설계
0이 포함되지 않는다는 String -> Number로 바꿀 때 Formating Exception이 발생하지 않음을 의미합니다.
문자열을 거꾸로 읽는법과, 두 수를 비교하는 법을 구현하면 될 것 같습니다.
코드
fun main() { val input = readLine()!! val splitInput = input.split(" ") val firstNumber = splitInput[0] val secondNumber = splitInput[1] val reversedFirstNumber = reverseString(firstNumber).toInt() val reversedSecondNumber = reverseString(secondNumber).toInt() val answer = when{ reversedFirstNumber > reversedSecondNumber -> reversedFirstNumber else -> reversedSecondNumber } println(answer) } fun reverseString(input : String) = input.reversed()
다른분들의 코드를 통해 배운 점
fun main() = print(readln().split(' ').map { it.reversed().toInt() }.maxOrNull())
readln() 메서드를 활용 : Kotlin 1.6부터 지원하는 것으로 알고 있음(저는 현재 1.5 사용 중이라 사용 불가능)
함수형 프로그래밍으로 훨씬 간결하고 명확한 의미를 가집니다.
대부분 reversed 메서드를 활용하신 분이 많았으며 String을 실제로 역순으로 만드는 메서드를 구현하신 분도 있었습니다.
또한 3자리 숫자라는 점을 활용하여 100,10,1을 곱하여 숫자로 접근하여 역순으로 만드는 분들도 계셨습니다.
개인적으로는 위의 한줄코딩이 제일 깔끔하다고 생각 듭니다.
비슷하게 인텔리제이의 추천으로 map을 제거하여 다음과 같이 구현할 수도 있습니다.
fun main() { val input = readLine()!! println(findMaxReversedNumber(input)) } fun findMaxReversedNumber(input : String) = input.split(" ").maxOfOrNull { it.reversed().toInt()}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2753번: 윤년 - 코틀린(Kotlin) (0) 2022.10.31 [백준] 2884번 : 알람 시계 - 코틀린(kotlin) (0) 2022.10.30 [백준] 1152 : 단어의 개수 - 코틀린(Kotlin) (0) 2022.10.27 [백준] 3052번 : 나머지 - 코틀린(kotlin) (0) 2022.10.26 [백준] 9498 : 시험 성적 - 코틀린(Kotlin) (0) 2022.10.25