23.12.22 TIL - 알고리즘 : 프로그래머스 평균 구하기

JJwoo·2024년 2월 2일

알고리즘

목록 보기
1/18

프로그래머스의 평균 구하기 문제를 풀어보았다.

1. 나의 풀이

public class Solution {
    public double solution(int[] arr) {
        double answer = 0;
        double sum = 0;
        for (int i = 0; i < arr.Length; i++)
        {
            sum += arr[i];
        }
        answer = sum / arr.Length;
        return answer;
    }
}
  • 변수 선언 : 기본 적으로 제공되는 답을 저장 할 변수 answer와, 합을 저장할 변수 sum을 초기화.

  • for문을 사용하여 배열 arr의 요소 전체를 순회하고, sum에 누적하여 합을 구함.

  • 합과 배열 요소 가짓수를 나눠 평균을 계산하고 answer에 할당

  • answer 반환


2. 다른 사람 풀이

Linq의 Average() 사용

예1)

using System.Linq;
public class Solution {
    public double solution(int[] arr) {
        return arr.Average();
    }
}
  • 배열의 평균값을 직접 반환,
  • Average 메소드가 배열 arr의 모든 원소에 대한 평균값을 계산하고 바로 반환

예2)

using System.Linq;

public class Solution {
    public double solution(int[] arr) {
        double answer = 0;
        answer = arr.Average();
        return answer;
    }
}
  • 예1과 비교하면 중간에 answer 변수에 값을 할당하는 단계가 있음.
  • 후에 추가적인 로직이나 조건을 적용하고 싶을 때 유용.

두 방법 모두 성능 측면에서 큰 차이가 없다 => 0(n)

Linq를 사용하는 방법은 코드가 더 간결하고 읽기 쉽지만, 아주 미세하게 추가적인 오버헤드가 발생할 수 있다.

for문을 사용하는 방법은 Linq의 추가적인 처리 없이 직접 계산을 수행하기 때문에, 최소한의 메모리와 CPU 시간을 사용한다.

대부분의 경우 System.Linq를 사용하는 것이 편리하다.

하지만 매우 큰 데이터셋을 다루거나, 게임 개발과 같이 높은 성능이 요구되는 상황에서는 순수한 반복문을 사용하는 방법이 약간 더 효율적일 수 있음.

profile
개발 모코코

0개의 댓글