ALGORITHM/코딩 기초 트레이닝

[ 프로그래머스]등차수열의 특정한 항만 더하기

jki09871 2024. 7. 30. 14:42

 

아무리 쉬운 코드도 리뷰 합니다.
문제 설명
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 
첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 
이 등차수열의 1항부터 n항까지 included가 true인 항들만 
더한 값을 return 하는 solution 함수를 작성해 주세요.

제한사항
1 ≤ a ≤ 100
1 ≤ d ≤ 100
1 ≤ included의 길이 ≤ 100
included에는 true가 적어도 하나 존재합니다.

입출력 예
a	d	included	result
3	4	[true, false, false, true, true]	37
7	1	[false, false, false, true, false, false, false]	10

입출력 예 설명

입출력 예 #1
예제 1번은 a와 d가 각각 3, 4이고 included의 길이가 5입니다. 
이를 표로 나타내면 다음과 같습니다.
1항	2항	3항	4항	5항
등차수열	3	7	11	15	19
included	true	false	false	true	true
따라서 true에 해당하는 1항, 4항, 5항을 더한 3 + 15 + 19 = 37을 return 합니다.

입출력 예 #2
예제 2번은 a와 d가 각각 7, 1이고 included의 길이가 7입니다. 
이를 표로 나타내면 다음과 같습니다.

1항	2항	3항	4항	5항	6항	7항
등차수열	7	8	9	10	11	12	13
included	false	false	false	true	false	false	false
따라서 4항만 true이므로 10을 return 합니다.
 ----------------------------------------------------------------------------------
class Solution {
    public int solution(int a, int d, boolean[] included) {
        int sum = 0;
        for (int i = 0; i < included.length; i++) {
            if (included[i]) {
                sum += a + (i * d); // 등차수열의 i번째 항을 더함
            }
        }
        return sum;
    }
}
  • 설명
    1. 등차수열 계산:
      • a + (i * d)는 등차수열의 i번째 항을 계산합니다.
    2. 누적합 계산:
      • included 배열을 순회하면서 included[i]가 true인 경우에만 해당 항의 값을 sum에 더합니다.
    3. 결과 반환:
      • 최종적으로 누적된 합 sum을 반환합니다.
    실행 예제
    • a = 3, d = 4, included = [true, false, false, true, true]:
      • 등차수열: [3, 7, 11, 15, 19]
      • 포함된 항: 3 + 15 + 19 = 37
    • a = 7, d = 1, included = [false, false, false, true, false, false, false]:
      • 등차수열: [7, 8, 9, 10, 11, 12, 13]
      • 포함된 항: 10

실행결과

정확성 테스트
테스트 1 통과 (0.03ms, 73.8MB)
테스트 2 통과 (0.02ms, 76.2MB)
테스트 3 통과 (0.03ms, 78.6MB)
테스트 4 통과 (0.02ms, 72.6MB)
테스트 5 통과 (0.02ms, 81.1MB)
테스트 6 통과 (0.02ms, 88.8MB)
테스트 7 통과 (0.03ms, 66.2MB)
테스트 8 통과 (0.03ms, 78MB)
테스트 9 통과 (0.02ms, 81.8MB)
테스트 10 통과 (0.03ms, 75.2MB)
테스트 11 통과 (0.02ms, 72.3MB)
테스트 12 통과 (0.02ms, 74.8MB)
테스트 13 통과 (0.02ms, 68.5MB)
테스트 14 통과 (0.02ms, 72MB)
테스트 15 통과 (0.04ms, 76.1MB)
테스트 16 통과 (0.03ms, 77.2MB)
테스트 17 통과 (0.02ms, 71.7MB)
테스트 18 통과 (0.03ms, 79.1MB)
테스트 19 통과 (0.02ms, 77.1MB)
테스트 20 통과 (0.01ms, 73.4MB)
테스트 21 통과 (0.02ms, 73.9MB)
테스트 22 통과 (0.02ms, 74.8MB)
테스트 23 통과 (0.03ms, 74.5MB)
테스트 24 통과 (0.01ms, 79.3MB)
테스트 25 통과 (0.01ms, 77.6MB)
테스트 26 통과 (0.02ms, 78.9MB)
테스트 27 통과 (0.02ms, 76.5MB)
테스트 28 통과 (0.02ms, 77.9MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0