[Lv. 0] 길이에 따른 연산프로그래머스/Level 02023. 5. 3. 14:10
Table of Contents
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/181879
난이도 : Level.0
언어 : Kotlin
문제 설명 :
정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요.
제한 사항 :
- 2 ≤ num_list의 길이 ≤ 20
- 1 ≤ num_list의 원소 ≤ 9
입출력 예 :
num_list | result |
[3, 4, 5, 2, 5, 4, 6, 7, 3, 7, 2, 2, 1] | 51 |
[2, 3, 4, 5] | 120 |
풀이 :
class Solution {
fun solution(num_list: IntArray): Int {
return if (num_list.size > 10) {
num_list.sumOf { it }
} else {
var temp = 1
for (i in num_list.indices) {
temp *= num_list[i]
}
temp
}
}
}
else의 for문을 줄인다면 어떻게 줄일 수 있을지 궁금했는데, 다른 사람들의 fold, reduce 함수 풀이법을 보고 이해했다.
해당 문제를 줄인다면 다음과 같이 줄일 수 있을 것이다.
class Solution {
fun solution(num_list: IntArray): Int = if (num_list.size > 10) num_list.sumOf { it } else num_list.fold(1) { acc, i -> acc * i }
}
'프로그래머스 > Level 0' 카테고리의 다른 글
[Lv. 0] 조건에 맞게 수열 변환하기 2 (0) | 2023.05.04 |
---|---|
[Lv. 0] 1로 만들기 (0) | 2023.05.03 |
[Lv. 0] 원하는 문자열 찾기 (0) | 2023.05.03 |
[Lv. 0] 대문자로 바꾸기 (0) | 2023.05.03 |
[Lv. 0] 소문자로 바꾸기 (0) | 2023.05.03 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!