[Kotlin] sumOf

Hood·2024년 12월 27일

Kotlin

목록 보기
11/18
post-thumbnail

✍  코틀린과 친해지자

PS문제를 하나씩 풀다보니 공부가 필요한 문법에 대해서 정리한 글입니다.


들어가기 전

우리가 PS 문제를 해결하다 보면 배열을 자주 사용하게 될 것입니다.
이에 SumOf 함수를 사용하면 반복문을 사용하지 않아도
쉽게 총합을 계산할 수 있을 것 입니다.

SumOf

SumOf 함수는 말 그대로 배열에 있는 모든 요소들을 더해서 반환해주는 함수입니다.

공식문서 설명

inline fun IntArray.sumOf(selector: (Int) -> Int): Int

공식문서 속에서도 컬렉션 타입에 .sumOf()의 함수를 적용시켜 선택자의 타입에 따라
총 합도 그 선택자를 따라가는 것을 확인할 수 있습니다.

In kotlin

fun main(){
    val arr = intArrayOf(2,4,6,8,10)

    //일반 반복문
    var sum = 0
    for(x in arr){
       sum += x
    }
    println("배열의 총합 : $sum")

    //sumOf
    val sumOf = arr.sumOf { it }
    println("배열의 총합 : $sumOf")
}

다음 예제는 배열 하나가 주어졌을 때 배열의 총합을 구하는 방법을 작성한 코드입니다.
반복문을 사용한 것보다 가독성 좋다는 것을 확인할 수 있습니다.


minOf, MaxOf

그렇다면 배열에서 최소, 최대를 찾는 함수는 무엇일까요?
바로 minOf, maxOf 함수 입니다.

이름 그대로 최소 값, 최대 값을 찾을 수 있습니다.

BOJ 10818

해당 문제를 위 함수로 풀면 활용할 수 있을 것 같으니
이 문제로 예시를 들어봅시다.

해당 문제는 N개의 정수를 받으면
이 때 최솟값과 최댓값을 출력하여 구하는 프로그램을 작성하는 문제입니다.

solve

import java.io.StreamTokenizer

fun main() = with(StreamTokenizer(System.`in`.bufferedReader())){
    fun nextInt() : Int { nextToken(); return nval.toInt() }

    val n = nextInt()
    val arr = IntArray(n) { nextInt() }

    val min = arr.minOf { it }
    val max = arr.maxOf { it }
    print("$min $max")
}
1. 입력을 받아준다.
2. min, max를 구하기 위해 minOf, maxOf 함수를 사용하여 구한 뒤
3. 출력을 해줍니다.

📌결론

배열에서의 총 합, 최소, 최대의 코드들을 가독성을 좀 더 올려주는 함수를 알아보았습니다.
PS 문제에서 잘 활용해 봅시다.

profile
달을 향해 쏴라, 빗나가도 별이 될 테니 👊

0개의 댓글