목차
#1 등차수열의 특정한 항만 더하기
문제 설명:
두 정수 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.length <= 100
- included에는 true가 최소 하나 존재.
입출력 예
#2 코드 및 알고리즘
class Solution { 등차 수열 공식을 사용하였다. a_{n}=a_{x}+(n-x)d
public int solution(int a, int d, boolean[] included) {
int sum = 0;
for(int i = 1; i <= included.length; i++){
if(included[i - 1] == true)
sum += (a + (i - 1) * d);
}
return sum;
}
}
------------------------------------------------------------
정확성 테스트
테스트 1 〉 통과 (0.04ms, 73.8MB)
테스트 2 〉 통과 (0.04ms, 87.4MB)
테스트 3 〉 통과 (0.04ms, 78.9MB)
테스트 4 〉 통과 (0.02ms, 80.5MB)
테스트 5 〉 통과 (0.03ms, 82.1MB)
테스트 6 〉 통과 (0.02ms, 73.3MB)
테스트 7 〉 통과 (0.02ms, 69.6MB)
테스트 8 〉 통과 (0.03ms, 71.9MB)
테스트 9 〉 통과 (0.02ms, 75.4MB)
테스트 10 〉 통과 (0.03ms, 76.1MB)
테스트 11 〉 통과 (0.02ms, 71.2MB)
테스트 12 〉 통과 (0.02ms, 77.5MB)
테스트 13 〉 통과 (0.04ms, 77.7MB)
테스트 14 〉 통과 (0.03ms, 86.2MB)
테스트 15 〉 통과 (0.03ms, 71.4MB)
테스트 16 〉 통과 (0.04ms, 74.8MB)
테스트 17 〉 통과 (0.03ms, 83.3MB)
테스트 18 〉 통과 (0.03ms, 77.8MB)
테스트 19 〉 통과 (0.03ms, 73.4MB)
테스트 20 〉 통과 (0.02ms, 81.8MB)
테스트 21 〉 통과 (0.03ms, 77.9MB)
테스트 22 〉 통과 (0.04ms, 72.7MB)
테스트 23 〉 통과 (0.02ms, 74.8MB)
테스트 24 〉 통과 (0.03ms, 76MB)
테스트 25 〉 통과 (0.03ms, 75.2MB)
테스트 26 〉 통과 (0.03ms, 73MB)
테스트 27 〉 통과 (0.02ms, 73.3MB)
테스트 28 〉 통과 (0.04ms, 69.2MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
풀이:
위의 공식을 사용하여...
- included [i] 번 원소가 true일 때만 (a + (i - 1) * d)를 저장하는데 기존에 저장되어 있던 것도 같이 더한다.
- sum = (a + (i - 1) * d) + sum;
import java.util.stream.IntStream;
class Solution {
public int solution(int a, int d, boolean[] included) {
return IntStream.range(0, included.length).map(i -> included[i] == true ? (a + (i * d)) : 0).sum();
}
}
--------------------------------------------------------------------------------------
정확성 테스트
테스트 1 〉 통과 (2.99ms, 77.5MB)
테스트 2 〉 통과 (2.62ms, 72.7MB)
테스트 3 〉 통과 (3.09ms, 77.9MB)
테스트 4 〉 통과 (7.70ms, 73.6MB)
테스트 5 〉 통과 (4.95ms, 75.3MB)
테스트 6 〉 통과 (3.51ms, 77.6MB)
테스트 7 〉 통과 (5.13ms, 82.9MB)
테스트 8 〉 통과 (3.36ms, 77.5MB)
테스트 9 〉 통과 (2.90ms, 78.6MB)
테스트 10 〉 통과 (3.09ms, 75.4MB)
테스트 11 〉 통과 (3.31ms, 87.2MB)
테스트 12 〉 통과 (3.58ms, 70MB)
테스트 13 〉 통과 (2.79ms, 79.8MB)
테스트 14 〉 통과 (3.16ms, 75.3MB)
테스트 15 〉 통과 (4.51ms, 78.4MB)
테스트 16 〉 통과 (2.54ms, 79.9MB)
테스트 17 〉 통과 (8.60ms, 68.3MB)
테스트 18 〉 통과 (3.88ms, 82.2MB)
테스트 19 〉 통과 (2.64ms, 72.1MB)
테스트 20 〉 통과 (3.25ms, 72.3MB)
테스트 21 〉 통과 (2.35ms, 76.7MB)
테스트 22 〉 통과 (3.37ms, 78.3MB)
테스트 23 〉 통과 (6.99ms, 74.2MB)
테스트 24 〉 통과 (2.49ms, 82.5MB)
테스트 25 〉 통과 (2.58ms, 78.4MB)
테스트 26 〉 통과 (3.04ms, 72.5MB)
테스트 27 〉 통과 (2.30ms, 76.9MB)
테스트 28 〉 통과 (2.31ms, 76.8MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
저번에 stream API에 대해 공부하기 시작했다. 이렇게 편할 줄이야.. 그런데 컴파일 시간 차이가 난다.
'JAVA > 프로그래머스 코딩 기초 트레이닝' 카테고리의 다른 글
[프로그래머스, LV.0] 마지막 두 원소 (0) | 2023.05.17 |
---|---|
[프로그래머스, LV.0] 주사위 게임 2 (0) | 2023.05.17 |
[프로그래머스, LV.0] 배열 만들기 2 (1) | 2023.05.17 |
[프로그래머스, LV.0] 주사위 게임 3 (2) | 2023.05.16 |
[프로그래머스, LV.0] 조건 문자열 (0) | 2023.05.16 |