본문 바로가기
🍪 Ect/#Study

[99클럽 코테 스터디] 2일차 TIL 배열

by 개발한 너굴씨 2024. 7. 23.
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

댓글