Post

[Golang] 프로그래머스 Lv.1 행렬의 덧셈

행렬의 덧셈 문제에 대해 풀이하고 테스트 코드를 작성 해보겠습니다.

문제 설명

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

제한사항

  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

입출력 예

arr1arr2return
[[1,2],[2,3]][[3,4],[5,6]][[4,6],[7,9]]
[[1],[2]][[3],[4]][[4],[6]]

풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
func solution(arr1 [][]int, arr2 [][]int) [][]int {

	var answer [][]int

	answer = make([][]int, len(arr1))
	for i := range arr1 {
		answer[i] = make([]int, len(arr1[i]))
		for j := range arr1[i] {
			answer[i][j] = arr1[i][j] + arr2[i][j]
		}
	}
	return answer
}
  • 문제의 조건 : 행과 열의 크기가 같은 두 행렬(arr1 , arr2)
  • answer를 arr1 의 크기로 초기화
  • arr1를 순회하며 answer[i]arr[i]의 크기만큼 초기화
    • 각 열을 순회 (arr1[i])
      • arr1[i][j]arr2[i][j]를 합한 값을 answer[i][j] 에 저장
  • answer 반환

테스트코드

유닛 테스트

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const TESTCOUNT = 2

var (
	arr1 = [TESTCOUNT][][]int{
		{{1, 2}, {2, 3}},
		{{1}, {2}},
	}
	arr2 = [TESTCOUNT][][]int{
		{{3, 4}, {5, 6}},
		{{3}, {4}},
	}
	result = [TESTCOUNT][][]int{
		{{4, 6}, {7, 9}},
		{{4}, {6}},
	}
)

func TestSolution(t *testing.T) {
	for i := 0; i < TESTCOUNT; i++ {
		fmt.Printf("arr1 : %v\n", arr1[i])
		fmt.Printf("arr2 : %v\n", arr2[i])
		fmt.Printf("result : %v\n", result[i])
		fmt.Printf("solution result : %v\n", solution(arr1[i], arr2[i]))
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
$ go test -v
=== RUN   TestSolution
arr1 : [[1 2] [2 3]]
arr2 : [[3 4] [5 6]]
result : [[4 6] [7 9]]
solution result : [[4 6] [7 9]]
arr1 : [[1] [2]]
arr2 : [[3] [4]]
result : [[4] [6]]
solution result : [[4] [6]]
--- PASS: TestSolution (0.01s)
PASS
ok      golang-coding-test/Lv1/matrix_addition  0.800s

Github 바로가기

This post is licensed under CC BY 4.0 by the author.