일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 취준기록
- recyclerview
- 알고리즘 인증_2주차
- Filter
- 알고리즘 인증
- 다시봐
- 다시정리하기
- 다시 정리해야함
- iPortfolio
- 알고리즘 인증_1주차
- filternot
- foldindexed
- array랑 list
- 코틀린
- 코딩테스트
- Today
- Total
Moments of growth
[Lv2 Kotlin] 최댓값과 최솟값 본문
[내가 짠 코드]
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