
내가 생각했을때 문제에서 원하는부분
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다.
첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.
내가 이 문제를 보고 생각해본 부분
Main14 클래스의 main 메서드는 자바 프로그램의 시작 지점이다.
Solution2 클래스의 인스턴스를 생성하여 solution2 메서드를 호출한다.
각 호출에서 첫 항 a, 공차 d, 그리고 포함 여부를 나타내는 included 배열을 인자로 전달한다.
solution2 메서드는 등차수열의 각 항을 계산하며 included가 true인 항들만 골라 합산한다.
결과는 result1, result2 변수에 저장되며 System.out.println으로 출력한다.
위 예제들은 문제에서 주어진 테스트 케이스와 일치하며, 실행 시 각각 37과 10이 정상적으로 표시된다.
코드로 구현
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]) {
int term = a + d * i;
answer += term;
}
}
return answer;
}
}
프로그래머스 코드
package programmers;
// 프로그래머스 등차수열의 특정한 항만 더하기
public class Main14 {
public static void main(String[] args) {
Solution2 sol = new Solution2();
// 예제 1: a=3, d=4, included 배열
boolean[] included1 = {true, false, false, true, true};
int result1 = sol.solution2(3, 4, included1);
System.out.println("결과1: " + result1); // 37이 출력되어야 한다.
// 예제 2: a=7, d=1, included 배열
boolean[] included2 = {false, false, false, true, false, false, false};
int result2 = sol.solution2(7, 1, included2);
System.out.println("결과2: " + result2); // 10이 출력되어야 한다.
}
}
class Solution2 {
public int solution2(int a, int d, boolean[] included) {
int answer = 0;
for (int i = 0; i < included.length; i++) {
if (included[i]) {
int term = a + d * i;
answer += term;
}
}
return answer;
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.