[Kotlin] 프로그래머스 - 최댓값과 최솟값

Kotlin

Language :

문제

링크

문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.

예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.

제한사항

s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

입출력 예

입출력 예 #1

  • 입력: "1 2 3 4"
  • 출력: "1 4"

입출력 예 #2

  • 입력: "-1 -2 -3 -4"
  • 출력: "-4 -1"

입출력 예 #3

  • 입력: "-1 -1"
  • 출력: "-1 -1"

코드 1

kotlin

class Solution {
    fun solution(s: String): String {
        var min = Int.MAX_VALUE
        var max = Int.MAX_VALUE * -1
        s.split(" ").forEach {
            min = minOf(it.toInt(), min)
            max = maxOf(it.toInt(), max)
        }
        return "$min $max"
    }
}

text

테스트 1 〉	통과 (20.70ms, 63.3MB)
테스트 2 〉	통과 (26.41ms, 61.3MB)
테스트 3 〉	통과 (19.38ms, 62.5MB)
테스트 4 〉	통과 (17.34ms, 61.3MB)
테스트 5 〉	통과 (21.57ms, 61.2MB)
테스트 6 〉	통과 (17.03ms, 61.6MB)
테스트 7 〉	통과 (17.00ms, 63.2MB)
테스트 8 〉	통과 (16.63ms, 60.9MB)
테스트 9 〉	통과 (18.67ms, 62.5MB)
테스트 10 〉	통과 (19.15ms, 61.4MB)
테스트 11 〉	통과 (23.98ms, 61MB)
테스트 12 〉	통과 (17.52ms, 61MB)

코드 2

kotlin

class Solution {
    fun solution(s: String): String {
        return s.split(" ").map { it.toInt() }.sorted().let { "${it.first()} ${it.last()}" }
    }
}
  • 프로그래머스 컴파일 버전 이슈인지 min(), max() 사용 못하고 정렬 후 first(), last() 사용

text

테스트 1 〉	통과 (45.34ms, 64.9MB)
테스트 2 〉	통과 (40.45ms, 65.4MB)
테스트 3 〉	통과 (38.93ms, 65.4MB)
테스트 4 〉	통과 (45.06ms, 65.1MB)
테스트 5 〉	통과 (32.97ms, 64.4MB)
테스트 6 〉	통과 (32.40ms, 64.4MB)
테스트 7 〉	통과 (33.80ms, 64.4MB)
테스트 8 〉	통과 (34.29ms, 64.6MB)
테스트 9 〉	통과 (46.71ms, 64.4MB)
테스트 10 〉	통과 (35.72ms, 64.6MB)
테스트 11 〉	통과 (32.11ms, 64.7MB)
테스트 12 〉	통과 (33.46ms, 64.5MB)

코드 3

kotlin

class Solution {
    fun solution(s: String): String {
        return s.split(" ").sortedBy { it.toInt() }.let { "${it.first()} ${it.last()}" }
    }
}

text

테스트 1 〉	통과 (59.22ms, 63.9MB)
테스트 2 〉	통과 (38.02ms, 66.2MB)
테스트 3 〉	통과 (56.48ms, 64.5MB)
테스트 4 〉	통과 (46.43ms, 64.8MB)
테스트 5 〉	통과 (40.38ms, 65.7MB)
테스트 6 〉	통과 (38.56ms, 64.6MB)
테스트 7 〉	통과 (38.30ms, 64.9MB)
테스트 8 〉	통과 (40.50ms, 65.1MB)
테스트 9 〉	통과 (53.86ms, 64.7MB)
테스트 10 〉	통과 (55.25ms, 65.2MB)
테스트 11 〉	통과 (42.85ms, 65.3MB)
테스트 12 〉	통과 (43.26ms, 64.9MB)

민갤

Back-End Developer

백엔드 개발자입니다.