프로그래머스

[프로그래머스] 배열의 평균값 - 반복문 활용, 형변환

Young_Han 2024. 9. 6. 21:02

[문제설명]

 

[처음 제출한 코드][오답]

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

 

 

 

[틀린 이유]

  • sum/number.length 값이 정수로 나오기 때문에 값을 잃는 경우가 존재한다. 
  • ex) sum/number.length = 5.5일 경우 값이 5로 나오고 0.5가 사라진다.
double answer = sum/numbers.length; //만약 sum/numbers.length가 5.5이 나올 경우
double answer = 5.0; //0.5가 소실된 후 형변환
answer = 5.0;

[수정한 코드]

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

 

[회고]

 answer 앞에 double이 있어 자동 형변환이 발생해 문제가 없다고 생각했지만, 애초에 오른쪽에 있는 값을 왼쪽에 대입하는 개념이라 형변환이 필요한 것 같다. 자바는 항상 변수의 값을 복사해서 대입한다는 대원칙을 잊지말자.