Moments of growth

[Lv2 Kotlin] 최댓값과 최솟값 본문

카테고리 없음

[Lv2 Kotlin] 최댓값과 최솟값

뮤링이 2022. 9. 17. 16:35

[내가 짠 코드]

class Solution {
    fun solution(s: String): String {
        var answer = ""
        // 공백으로 잘라서 리스트에 저장하기
        var token = s.split(' ')
        // int형 ArrayList 빈 배열
        var token2 = ArrayList<Int>()
        // 리스트 안의 값 int형으로 변경
        for(i in token){
            token2.add(i.toInt())
        }
        // 리스트 안에서 오름차순 정렬하기
        var sorted = token2.sorted()
        // 리스트 첫번째 값과 마지막 값 붙이기
        answer = sorted[0].toString() + " " + sorted.last().toString() 
        return answer
    }
}

[다른 사람 풀이 1]

class Solution {
    fun solution(s: String): String {
       var answer = ""

       val strList = s.split(" ").map { it.toInt() }

       val max = strList.max()

       val min = strList.min()

       answer = "$min $max"

       return answer
    }
}

 

filter 함수

filter 함수는 리스트를 이터레이션하면서 리턴이 true 인 값만 필터링합니다.

더보기

var listInts = listOf(1,2,3,4)
//filter
listInts.filter { it % 2 == 0 }
//출력
[2,4]

 

 

map 함수

map 함수는 값을 변형해서 새로운 ArrayList를 생성합니다.

더보기

var listInts = listOf(1,2,3,4)
listInts.map { it * it }
//출력
[1,4,9,16]

val people = listOf(Person("A", 27), Person("B", 35), Person("C", 35))
listInts.map { it.name }
//출력
[A, B, C]
//심플한 방법
people.map(Person::name)

//30살 이상의 이름 출력
people.filter { it.age >= 30 }.map(Person::name)

//가장 나이가 많은 사람들 모두 출력하기
//1. 최대값을 구하는 반복작업이 쓸데없이 많은 코드
people.filter { it.age == (people.maxBy(Person::age)!!.age) } //매번 maxBy 호출

//2. 계산이 중복되는것을 피하자. 람다안에 람다를 넣는것은 내부 로직을 매우 복잡하게 할 수 있음
val maxAge = people.maxBy(Person::age)!!.age //외부로 빼서 불필요한 반복 제거
people.filter { it.age == maxAge }

//맵 사용
//map 에는 filterKeys, mapKeys 와 filterValues, mapValues 함수가 있음
val numbers = mapOf(0 to "zero", 1 to "one")
val upperNumbers = numbers.mapValues { it.value.toUpperCase() }
//출력
[0=ZERO, 1=ONE]

 

- listOf 배열 및 ArrayList 배열에서 min(), max() 함수가 최솟값, 최댓값 반환

 

[다른 사람 풀이 2]

class Solution {
    fun solution(s: String): String = s.split(" ").map { it.toInt() }.let { "${it.min()} ${it.max()}" }
}

* let은 it으로 받고 리턴값을 반환함

 

 

참고)

https://zerogdev.blogspot.com/2019/07/kotlin-filter-map-all-any-count-find.html

Comments