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

nacSeo (낙서)·2024년 1월 6일
0

프로그래머스

목록 보기
14/169

문제 설명

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

나의 코드

class Solution {
    public int solution(int a, int d, boolean[] included) {
        int answer = 0;
        int size = included.length;
        int[] arr = new int[size];
        arr[0] = a;
        for(int i=1; i<size; i++) {
            arr[i] = arr[i-1] + d;
            if(included[i] == true) {
                answer += arr[i];
            }
        }
        return answer;
    }
}

첫 번째 코드 : included[0] == true일 때가 포함이 안됨

class Solution {
    public int solution(int a, int d, boolean[] included) {
        int answer = 0;
        int size = included.length;
        int[] arr = new int[size];
        arr[0] = a;
        for(int i=1; i<size; i++) {
            arr[i] = arr[i-1] + d;
            if(included[i] == true) {
                answer += arr[i];
            }
        }
        if(included[0] == true) {
            answer += a;
        }
        return answer;
    }
}


최종 코드 : 단순하게 for문 밖에 included[0] == true일 때 조건문을 달아 해결

다른 사람 코드

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 + (d*i);
            }
        }

        return answer;
    }
}

if문은 조건이 참일 때만 코드를 실행하므로 굳이 included[i]==true가 아닌, included[i]만 조건에 넣어줘도 된다.
등차수열 일반항 구하는 공식을 사용하여 간단하게 해결한 모습

느낀 점

수학 공식도 공부하는 데에 있어 큰 도움이 될 것 같다 .. 🥲🥲

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글