프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제

제출한 코드
1. for문 사용
class Solution {
public int solution(int[] a, int[] b) {
int answer = 0;
for (int i = 0; i < a.length; i++) {
answer += a[i] * b[i];
}
return answer;
}
}
2. IntStream 사용
import java.util.stream.IntStream;
class Solution {
public int solution(int[] a, int[] b) {
return IntStream.range(0, a.length)
.map(index -> a[index] * b[index])
.sum();
}
}
풀이
1. for문 사용
문제를 처음 봤을 때 가장 먼저 생각났던 방법은 for문을 사용하는 것이었다.
for문을 사용해서 i 의 값을 하나씩 늘려가면서 a[i] * b[i] 를 answer 에 계속 더한 후 return 하면 되는 간단한 문제이다.
2. IntStream 사용
이 방법은 다른 사람이 푼 방법을 보고 알게 된 방법이다.
IntStream은 java.util.stream 를 import 하여 사용할 수 있다.
IntStream에서는 range() 라는 메서드를 제공하는데, 이는 주어진 범위 내 순차적인 정수 스트림을 반환한다.
예를 들어, range(0, 10) 이라고 범위를 지정하면 0부터 9까지의 숫자를 Integer 타입으로 출력한다. 문제에서는 배열의 크기만큼 map을 해줘야 하기 때문에 range의 두 번째 인자에 a.length 값으로 두었다.
(문제에서 배열 a와 b의 길이는 동일하므로, b.length로 두어도 괜찮다.)
이후 map() 메서드를 사용했는데, 이는 주어진 함수를 스트림의 각 요소에 적용한 결과로 구성된 스트림을 반환해준다.
따라서 map(index -> a[index] * b[index]) 를 통해 각 배열의 같은 위치에 있는 요소들을 곱할 수 있다.
마지막으로 sum() 메서드를 사용해서 연산된 각 스트림의 요소들의 합을 반환받음으로써 단 한 줄만으로도 해당 문제를 해결할 수 있었다.
'프로그래머스' 카테고리의 다른 글
| [프로그래머스] 12918번 - 문자열 다루기 기본 [Java] (0) | 2026.04.15 |
|---|---|
| [프로그래머스] 82612번 - 부족한 금액 계산하기 [Java] (0) | 2026.04.14 |
| [프로그래머스] 12917번 - 문자열 내림차순으로 배치하기 [Java] (0) | 2026.04.13 |
| [프로그래머스] 77884번 - 약수의 개수와 덧셈 [Java] (0) | 2026.04.10 |
| [프로그래머스] 12922번 - 수박수박수박수박수박수? [Java] (0) | 2026.04.08 |
