자료구조 & 알고리즘/프로그래머스

[프로그래머스] #.12912 - 두 정수 사이의 합

두 정수 사이의 합

문제 설명

두 정수 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의 대소관계는 정해져있지 않습니다.

입출력 예

a b return
3 5 12
3 3 3
5 3 12

문제 해결하기

func solution(a int, b int) int64

제한 조건 중 3번째 조건에 주목하자. a, b의 대소관계는 정해져있지 않다 함은 어떤 것이 더 작거나 큰지 알 수 없다는 것이므로 반복문을 돌릴 때 math.Min, math.Max 를 사용하여 처리해주면 깔끔하게 처리할 수 있다.

func solution(a int, b int) int64 {
	var sum int64

	if a == b {
		return int64(a)
	}
	for i := math.Min(float64(a), float64(b)); i <= math.Max(float64(a), float64(b)); i++ {
		sum += int64(i)
	}

	return sum
}

func TestSolution(t *testing.T) {
	cases := []struct {
		a      int
		b      int
		expect int64
	}{
		{3, 5, 12},
		{3, 3, 3},
		{5, 3, 12},
	}
	for _, c := range cases {
		if r := solution(c.a, c.b); r != c.expect {
			t.Errorf("a %#v, b %#v; got %#v, want %#v", c.a, c.b, r, c.expect)
		}
	}
}

더 읽을거리

github.com/pronist/al.go/tree/main/programmers/_12912

programmers.co.kr/learn/courses/30/lessons/12912