🍪 Ect/#Study
                
              [99클럽 코테 스터디] 2일차 TIL 배열
                개발한 너굴씨
                 2024. 7. 23. 21:14
              
              
                    
        728x90
    
    
    
  
오늘의 문제는 프로그래머스
평균 구하기
문제

문제 접근 및 풀이 과정
오늘의 문제 권장 풀이 시간은 30분이었고, 저는 13분이 걸렸습니다.
개인적으로 문제가 어제 보단 쉬워서 더 빨리 풀 수 있었습니다.
아마 배열을 다루는 것이 코테의 가장 기본이라 연습하고 공부할 수 있도록 연속적으로 문제를 출제하신 것 같습니다.
문제 접근 방식
오늘 문제를 풀 때 주의할 점은 '인덱스의 합을 저장할 변수 sum의 자료형'이었습니다.
처음 주어진 코드를 보면 answer가 double형으로 선언된 것을 볼 수 있습니다.
그런데 만약 합을 구할 때 정수형으로 선언하면 어떻게 될까요?
배열이 [1, 2, 3, 4]인 경우를 예로 들어보겠습니다.
sum이 int형으로 선언 됐을 때
- 배열의 모든 요소를 더한 값은 10입니다.
- 배열의 길이 len은 4입니다.
- sum이 int이므로 sum / len은 10 / 4로 정수 나눗셈이 되어 2가 됩니다.
- 따라서 answer는 2.0라는 틀린 값을 저장하게 됩니다.
sum을 double형으로 선언 했을 때
- 배열의 모든 요소를 더한 값은 10.0이 됩니다.
- 배열의 길이 len은 4입니다.
- sum이 double이므로 sum / len은 10.0 / 4로 부동 소수점 나눗셈이 되어 2.5가 됩니다.
- 따라서 answer는 2.5라는 맞는 값을 저장하게 됩니다.
따라서 인덱스의 합을 저장할 변수에 double형을 사용하여 선언하였습니다.
문제 풀이
class Solution {
    public double solution(int[] arr) {
        
        int len = arr.length; 
        double sum = 0; 
        
        for(int i = 0; i < len; i++) {
            sum += arr[i];
        }
        
        double answer = 0; 
        answer = sum / len; 
        return answer;
    }
}
반복문 설계 자세히 알아보기
반복문은 초기화 부분과 본문 부분으로 나뉩니다.
반복문 초기화
(int i = 0; i < len; i++)
위 코드에서 i는 0으로 초기화되어 i < len까지 반복되고 반복이 끝날 때마다 i값은 1씩 증가합니다.
반복문 본문
sum += arr[i];
위 코드에서 `sum += arr[i];`는 배열의 `i`번째 인덱스 값을 `sum`에 더합니다.
이를 통해 배열의 모든 요소를 더해 'sum'에 저장합니다. 
이렇게 오늘 2일차 TIL을 작성해 보았습니다.
728x90
    
    
    
  