[CodingTest] 평균 구하기

hye·2023년 2월 3일
0

AlgorithmTest

목록 보기
2/95

📖 Exam

문제 설명

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

제한사항

  • arr은 길이 1 이상, 100 이하인 배열입니다.
  • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.

입출력 예

arrreturn
[1,2,3,4]2.5
[5,5]5

✍ Answer

class Solution {
    public double solution(int[] arr) {
        double answer = 0;
        double sum = 0;
        
        for(int i=0;i<arr.length;i++){
           sum = sum + arr[i];
        };
        
        answer = sum/arr.length;
        
        return answer;
    }
}

💡 Realization

  • initialized 초기값 없는 오류 등장
    변수 처음쓸 때 대입이 아닌, 연산이 들어가면 초기값이 있어야함.
    또한 sum의 자료형은 int로 수정하는게 맞다.
    int형 배열에서 더하기때문에 결과물은 int형만 출력된다.
double sum = 0;
  • 자바 연산자 ( =+ , += ) 차이
sum = sum + arr[i];
sum += arr[i];
sum =+ arr[i]; //error문법. =+ 연산자는 존재하지않는다.
  • for-each문 / 향상된 for문
    배열에 들어있는 데이터의 자료형에 대해서 변수를 선언하고
    차례차례 배열안의 값을 변수에 담아서 반복을 하는 for문
for(int i: array){
       sum += i;
}

* 다른 해답

  • 배열이 null 일 경우에 대한 처리
 public int getMean(int[] array) {
      if(array == null){
        return 0;
      }
      int ret = 0;
      if(array != null){
        for(int n : array){
            ret += n;
        }
      }
      return ret / array.length;
    }
  • 조건문을 배열의 길이가 0일 때도 추가해서 처리
if(array == null || array.length == 0)
  • if문 안에만 return 이 있으면 다른 상황에서 return 값이 존재하지않기 때문에 error.
    컴파일 과정에서 error라고 보는거같다.

  • array == null 거나 array != null 인 상황이기때문에
    if-else 문으로 변경하여 각 return 을 주는게 더 맞는거같다고 생각하였으나,
    이전에 보았던 default 셋팅을 통한 리팩토링으로 아래와 같이 간단하게 답을 수정함

profile
Junior Backend Developer

0개의 댓글