Post

[Golang] 프로그래머스 Lv.1 두 정수 사이의 합

두 정수 사이의 합 문제에 대해 풀이하고 테스트 코드를 작성 해보겠습니다.

문제 설명

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

제한사항

  • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
  • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
  • a와 b의 대소관계는 정해져있지 않습니다.

입출력 예

abreturn
3512
333
5312

풀이

1
2
3
4
5
6
7
8
9
10
func solution(a int, b int) int64 {
	if a > b {
		a, b = b, a
	}
	var answer int
	for i := a; i <= b; i++ {
		answer += i
	}
	return int64(answer)
}
  • ab 보다 크다면 ab 의 값을 바꿈
  • a ~ b 순회
    • answeri 값을 더함
  • answer 의 자료형을 int64 로 변환하고 반환

테스트코드

유닛 테스트

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
26
27
28
29
30
const TESTCOUNT = 3

var (
	a = [TESTCOUNT]int{
		3,
		3,
		5,
	}

	b = [TESTCOUNT]int{
		5,
		3,
		3,
	}

	result = [TESTCOUNT]int{
		12,
		3,
		12,
	}
)

func TestSolution(t *testing.T) {
	for i := 0; i < TESTCOUNT; i++ {
		fmt.Println("a ", a[i])
		fmt.Println("b ", b[i])
		fmt.Println("result ", result[i])
		fmt.Println("solution result : ", solution(a[i], b[i]))
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ go test -v
=== RUN   TestSolution
a  3
b  5
result  12
solution result :  12
a  3
b  3
result  3
solution result :  3
a  5
b  3
result  12
solution result :  12
--- PASS: TestSolution (0.00s)
PASS
ok      golang-coding-test/lv1/sum_between      0.144s

Github 바로가기

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