[문제설명]
[처음 제출한 코드][오답]
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이 있어 자동 형변환이 발생해 문제가 없다고 생각했지만, 애초에 오른쪽에 있는 값을 왼쪽에 대입하는 개념이라 형변환이 필요한 것 같다. 자바는 항상 변수의 값을 복사해서 대입한다는 대원칙을 잊지말자.
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 조건문 switch (0) | 2024.09.09 |
---|---|
[프로그래머스]자릿수 더하기 (0) | 2024.09.07 |
[프로그래머스]짝수의 합 - 반복문 활용, if문 활용 (0) | 2024.09.05 |
[프로그래머스] 삼항 연산자 / 문제 / 조건문 활용 (0) | 2024.09.04 |
[프로그래머스][MySQL]오랜 기간 보호한 동물- LEFT JOIN 활용 (0) | 2024.08.29 |