1. 문제
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
제한사항
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
2. 풀이
// 나누어 떨어지는 숫자 배열
package divide
import "sort"
func Solution(arr []int, divisor int) []int {
var answer []int
sort.Slice(arr, func(u, v int) bool {
return arr[u] < arr[v]
})
for _, value := range arr {
if value%divisor == 0 {
answer = append(answer, value)
}
}
if len(answer) == 0 {
return []int{-1}
}
return answer
}
3. 테스트
package divide
import "testing"
func TestDivide(t *testing.T) {
input1 := [][]int{{5, 9, 7, 10}, {2, 36, 1, 3}, {3, 2, 6}}
input2 := []int{5, 1, 10}
expect := [][]int{{5, 10}, {1, 2, 3, 36}, {-1}}
for i := range input1 {
result := Solution(input1[i], input2[i])
for j := range result {
if result[j] != expect[i][j] {
t.Errorf("Test%d: Wrong result", i+1)
t.Error("expect:", expect[i])
t.Error("result:", result)
break
}
}
}
}
programmers.co.kr/learn/courses/30/lessons/12910
'Programmers > Go' 카테고리의 다른 글
[Programmers/Go] 문자열 내 마음대로 정렬하기 (0) | 2021.04.29 |
---|---|
[Programmers/Go] 두 정수 사이의 합 (0) | 2021.04.29 |
[Programmers/Go] 음양 더하기 (0) | 2021.04.29 |
[Programmers/Go] 내적 (0) | 2021.04.29 |
[Programmers/Go] 소수 만들기 (0) | 2021.04.29 |