프로그래머스 > 코딩테스트 연습 > 코딩 기초 트레이닝 > 길이에 따른 연산
https://school.programmers.co.kr/learn/courses/30/lessons/181879
📒 문제
정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요.
제한사항
- 2 ≤ num_list의 길이 ≤ 20
- 1 ≤ num_list의 원소 ≤ 9
- num_list의 원소를 모두 곱했을 때 2,147,483,647를 넘는 입력은 주어지지 않습니다.
입출력 예
num_list | result |
[3, 4, 5, 2, 5, 4, 6, 7, 3, 7, 2, 2, 1] | 51 |
[2, 3, 4, 5] | 120 |
입출력 예 설명
입출력 예 #1
- 리스트의 길이가 13이므로 모든 원소의 합인 51을 return합니다.
입출력 예 #2
- 리스트의 길이가 4이므로 모든 원소의 곱인 120을 return합니다.
💻 소스코드
using System;
using System.Linq;
public class Solution {
public int solution(int[] num_list) {
int num = 1;
if (num_list.Length >= 11) return num_list.Sum();
else
{
foreach(int i in num_list)
{
num *= i;
}
return num;
}
}
}
다른 풀이
using System;
using System.Linq;
public class Solution {
public int solution(int[] num_list) {
return num_list.Length >= 11 ? num_list.Sum() : num_list.Aggregate((c, n) => c*n);
}
}
※ 참고 사이트
Aggregate() : https://ibocon.tistory.com/113
📝 풀이
첫번째 풀이의 경우 더하기는 Sum() 메서드를 통해서 한번에 연산했지만, 곱하는 방식은 for문을 통해서 누적했다.
이 때문에 코드 통일성도 떨어지고 한번에 곱하는 방법을 찾아보았다.
그래서 찾은 방법이 Linq메서드 중 Aggregate()를 사용하는 방식이다.
덕분에 삼항연산자로 깔끔하게 정리할 수 있었다.
관련 포스팅
'코딩 테스트 (C#) > 프로그래머스 (기초)' 카테고리의 다른 글
[C#][프로그래머스 > 코딩테스트 기초] 공백으로 구분하기 2 (0) | 2024.07.31 |
---|---|
[C#][프로그래머스 > 코딩테스트 기초] 조건에 맞게 수열 변환하기 1 (0) | 2024.07.30 |
[C#][프로그래머스 > 코딩테스트 기초] 문자열의 뒤의 n글자 (1) | 2024.07.24 |
[C#][프로그래머스 > 코딩테스트 기초] 더 크게 합치기 (1) | 2024.07.23 |
[C#][프로그래머스 > 코딩테스트 기초] 배열 만들기2 (3) | 2024.07.23 |