1. 문제
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.제한사항
- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
2. 풀이
숫자 세 개를 중복되지 않게 더하고 소수인지 판별한다.
// 소수 만들기
package prime
func isPrime(num int) bool {
if num < 2 {
return false
}
for i := 2; i*i <= num; i++ {
if num%i == 0 {
return false
}
}
return true
}
func Solution(nums []int) int {
answer := 0
length := len(nums)
for i := 0; i < length-2; i++ {
for j := i + 1; j < length-1; j++ {
for k := j + 1; k < length; k++ {
if isPrime(nums[i] + nums[j] + nums[k]) {
answer++
}
}
}
}
return answer
}
3. 테스트
package prime
import "testing"
func TestPrime(t *testing.T) {
input := [][]int{{1, 2, 3, 4}, {1, 2, 7, 6, 4}}
expect := []int{1, 4}
for i := range input {
result := Solution(input[i])
if result != expect[i] {
t.Errorf("Test%d: Wrong result", i+1)
t.Error("expect:", expect[i])
t.Error("result:", result)
}
}
}
programmers.co.kr/learn/courses/30/lessons/12977
'Programmers > Go' 카테고리의 다른 글
[Programmers/Go] 음양 더하기 (0) | 2021.04.29 |
---|---|
[Programmers/Go] 내적 (0) | 2021.04.29 |
[Programmers/Go] 가운데 글자 가져오기 (0) | 2021.04.29 |
[Programmers/Go] 2016년 (0) | 2021.04.29 |
[Programmers/Go] 체육복 (0) | 2021.04.29 |