등차수열의 특정한 항만 더하기(with.Java)
등차수열의 특정한 항만 더하기(with.Java)에 대하여 알아본 글입니다.
코딩 테스트 문제를 풀며, 풀었던 문제에 대한 회고와 다른 풀이 방법을 알아보며, 알아가고자 합니다. 문제에 대해 먼저 알아보겠습니다.
문제
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.
문제에서 말하는 등차수열이란? 인접한 수의 차이가 같은 수의 나열입니다.
입출력 예시
a: 3 b: 4 included: [true, false, false, true, true] result: 37
즉, 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 합니다.
문제에 대한 나의 풀이
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;
}
a += d;
}
return answer;
}
}
풀이 설명
included의 크기만큼 반복해야 하기 때문에 반복문을 사용하고 이후 boolean 배열의 included의 요소 중 true가 있다면 answer에 a의 값을 저장합니다. 등차수열인 점을 감안하여 반복문에서 a에 d의 값만큼을 계속 더하는 것으로 로직을 구현했습니다.