두 정수 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만큼 증가시키고?
라고 생각했는데 틀려먹었다. 이렇게 적어놨으니 실패하는 게 당연하다.
이미지 출처 나무위키
등차수열의 일반항을 구하는 법은 다음과 같다.
이것을 사용하여 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
라고 적지 않아도 된다.