문제 설명
두 정수 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]
만 조건에 넣어줘도 된다.
등차수열 일반항 구하는 공식을 사용하여 간단하게 해결한 모습
느낀 점
수학 공식도 공부하는 데에 있어 큰 도움이 될 것 같다 .. 🥲🥲