[Golang] 프로그래머스 Lv.1 내적
내적 문제에 대해 풀이하고 테스트 코드를 작성 해보겠습니다.
문제 설명
길이가 같은 두 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의 길이)
제한사항
- a, b의 길이는 1 이상 1,000 이하입니다.
- a, b의 모든 수는 -1,000 이상 1,000 이하입니다.
입출력 예
a | b | result |
---|---|---|
[1,2,3,4] | [-3,-1,0,2] | 3 |
[-1,0,1] | [1,0,-1] | -2 |
입출력 예 설명
입출력 예 #1
- a와 b의 내적은
1*(-3) + 2*(-1) + 3*0 + 4*2 = 3
입니다.
입출력 예 #2
- a와 b의 내적은
(-1)*1 + 0*0 + 1*(-1) = -2
입니다.
풀이
1
2
3
4
5
6
7
8
func solution(a []int, b []int) int {
var total int
for i, v := range a {
total += v * b[i]
}
return total
}
- a,b 의 길이가 같으므로 둘 중 아무 배열이나 순회
- 순회하며 나온 값과, 상대 배열의 값을 곱하여 total 에 누적
- total 반환
테스트코드
유닛 테스트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const TESTCOUNT = 2
var (
a = [TESTCOUNT][]int{
{1, 2, 3, 4},
{-1, 0, 1},
}
b = [TESTCOUNT][]int{
{-3, -1, 0, 2},
{1, 0, -1},
}
result = [TESTCOUNT]int{3, -2}
)
func TestSolution(t *testing.T) {
for i := 0; i < TESTCOUNT; i++ {
fmt.Printf("a : %v\n", a[i])
fmt.Printf("b : %v\n", b[i])
fmt.Printf("result : %d\n", result[i])
fmt.Printf("solution result : %d\n", solution(a[i], b[i]))
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
$ go test -v
=== RUN TestSolution
a : [1 2 3 4]
b : [-3 -1 0 2]
result : 3
solution result : 3
a : [-1 0 1]
b : [1 0 -1]
result : -2
solution result : -2
--- PASS: TestSolution (0.01s)
PASS
ok golang-coding-test/Lv1/dot_product 0.234s
Github 바로가기
This post is licensed under CC BY 4.0 by the author.