[Java] 등차수열의 특정한 항만 더하기

peace w·2023년 9월 27일
0

프로그래머스

목록 보기
13/25
post-custom-banner

문제

  • 두 정수 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가 적어도 하나 존재합니다.

입출력 예

문제 풀이

난 수포자다. 등차수열의 일반항 구하는 방법 따위 모른다.
모르고서 그냥 코드를 적는데 계속 테스트에서 실패하더라.

for (int i = a; i <= included.length; i += d) {
    // 반복문을 이렇게 적었는데 될리가 있나.
}

막연하게..등차수열이 a부터 시작하니까 i에도 a넣으면 되는거 아닌가? i도 d만큼 증가시키고?
라고 생각했는데 틀려먹었다. 이렇게 적어놨으니 실패하는 게 당연하다.

이미지 출처 나무위키

등차수열의 일반항을 구하는 법은 다음과 같다.

an=a1+(n1)da_{n} = a_{1} + (n-1)d

이것을 사용하여 answer를 구한다. i의 시작점을 0; i의 범위를 included.length; 보다 작다고 설정하면 i-1하지 않아도 된다.

answer += a + (i * d);
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]) {
                answer += a + (i * d);
                continue;
            }
        }
        
        return answer;
    }
}

if 문은 조건이 true 일때만 코드를 실행하므로 included[i] == true 라고 적지 않아도 된다.

profile
더 성장하자.
post-custom-banner

0개의 댓글