📝24.01.11
🔗 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/120817
문제 설명
정수 배열
numbers
가 매개변수로 주어집니다.numbers
의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
using System;
public class Solution {
public double solution(int[] numbers) {
double answer = 0;
for(int i = 0; i < numbers.Length; i++) {
answer += (double) numbers[i];
}
answer /= numbers.Length;
return answer;
}
}
Linq에 Average()라는 메서드가 있었다. 이젠 약간 또 너냐 싶을 정도라서 하루 날잡고 Linq 관련 정리를 해야할 것 같다.
using System;
using System.Linq;
public class Solution {
public double solution(int[] numbers) {
return numbers.Average();
}
}
C#과 동일한 방법으로 풀이.
#include <string>
#include <vector>
using namespace std;
double solution(vector<int> numbers) {
double answer = 0;
for(int i = 0; i < numbers.size(); i++) {
answer += (double) numbers[i];
}
answer /= numbers.size();
return answer;
}
C++에는 numeric이라는 헤더의 accumulate 함수를 활용한 풀이가 깔끔했다.
accumulate(첫번째 iter, 두번째 iter, 합의 초기값)
형태로 쓸 수 있다.
하단의 경우에는 합의 초기값을 0.0으로 해주어 double로 암시적 형변환을 해준 것이다. 해당 위치에 합의 초기값을 0으로 하면 소수 부분이 사라져 틀린 풀이가 된다.
#include <string>
#include <vector>
#include <numeric>
using namespace std;
double solution(vector<int> numbers) {
double answer = accumulate(numbers.begin(),numbers.end(),0.0) / numbers.size();
return answer;
}
추가로 앞으로는 깃허브에도 꼬박꼬박 올라갈 예정이다.