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

KIMYEONGJUN·2026년 5월 9일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

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

내가 이 문제를 보고 생각해본 부분

Main14 클래스의 main 메서드는 자바 프로그램의 시작 지점이다.
Solution2 클래스의 인스턴스를 생성하여 solution2 메서드를 호출한다.
각 호출에서 첫 항 a, 공차 d, 그리고 포함 여부를 나타내는 included 배열을 인자로 전달한다.
solution2 메서드는 등차수열의 각 항을 계산하며 included가 true인 항들만 골라 합산한다.
결과는 result1, result2 변수에 저장되며 System.out.println으로 출력한다.
위 예제들은 문제에서 주어진 테스트 케이스와 일치하며, 실행 시 각각 37과 10이 정상적으로 표시된다.

코드로 구현

class Solution {
    public int solution(int a, int d, boolean[] included) {
        int answer = 0;
        for (int i = 0; i < included.length; i++) {
            if (included[i]) {
                int term = a + d * i;
                answer += term;
            }
        }
        return answer;
    }
}

프로그래머스 코드

package programmers;

// 프로그래머스 등차수열의 특정한 항만 더하기
public class Main14 {
    public static void main(String[] args) {
        Solution2 sol = new Solution2();

        // 예제 1: a=3, d=4, included 배열
        boolean[] included1 = {true, false, false, true, true};
        int result1 = sol.solution2(3, 4, included1);
        System.out.println("결과1: " + result1);  // 37이 출력되어야 한다.

        // 예제 2: a=7, d=1, included 배열
        boolean[] included2 = {false, false, false, true, false, false, false};
        int result2 = sol.solution2(7, 1, included2);
        System.out.println("결과2: " + result2);  // 10이 출력되어야 한다.
    }
}

class Solution2 {
    public int solution2(int a, int d, boolean[] included) {
        int answer = 0;
        for (int i = 0; i < included.length; i++) {
            if (included[i]) {
                int term = a + d * i;
                answer += term;
            }
        }
        return answer;
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글