본문 바로가기

Programmers/Go

[Programmers/Go] 소수 만들기

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

 

코딩테스트 연습 - 소수 만들기

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때

programmers.co.kr

 

'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