반응형
***** 문제 설명 *****
길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다.
a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
***** 제한사항 *****
1. a, b의 길이는 1 이상 1,000 이하입니다.
2. a, b의 모든 수는 -1,000 이상 1,000 이하입니다.
***** 풀이 *****
해당 문제는 for문을 사용하는 방법과 stream을 사용하는 방법 두가지방법이 있습니다.
다만 stream의 경우 코딩테스트에서 간편하고 코드 길이가 짧아 보일 수 있으나 속도면에서
아직 for문만큼 최적화가 이루어 지지않아 for보다 느리다는 단점이 있습니다.
1
2
3
4
5
6
7
|
public static int solution(int[] a, int[] b) {
int answer = 0;
for(int i = 0; i < a.length; i++){
answer += a[i] * b[i];
}
return answer;
}
|
cs |
첫 번째의 for문을 이용한 풀이 입니다. 어차피 a와 b의 길이가 같기 때문에 length는 어떤걸 사용하시든 무방 합니다.
stream을 사용한 풀이
1
2
3
|
public static int solution(int[] a, int[] b) {
return IntStream.range(0, a.length).map(index -> a[index] * b[index]).sum();
}
|
cs |
해당 풀이는 stream을 사용한 풀이로 range로 for문을 돌리고 값을 값을 전부 더한 값을 리턴시키는 함수를 사용하여
뮨제를 풀었습니다.
반응형
'Algorithm & Data Structure > Algorithm' 카테고리의 다른 글
[프로그래머스] 문자열 내림차순으로 배치하기 풀이 (0) | 2023.11.15 |
---|---|
[프로그래머스] 약수의 개수와 덧셈 풀이 (1) | 2023.11.14 |
[프로그래머스] 수박수박수박수박수박수? 풀이 (0) | 2023.11.13 |
[프로그래머스]제일 작은 수 제거하기 (1) | 2023.11.12 |
[프로그래머스]없는 숫자 더하기 (0) | 2023.11.11 |