Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- HeadFirstDesignPatterns
- 취업사실신고
- 막대기자르기
- 네트워크
- 후니의쉽게쓴시스코라우팅
- 알고리즘
- 전화영어
- 캡쳐링
- IT기초
- 자료구조
- 회사폐업
- 실업인정인터넷신청
- 사회초년생
- 부분합알고리즘
- 튜터링
- 정보
- 순열
- C++
- 동적계획법
- 실업급여
- array
- 생애첫계약
- 청년내일채움공제
- 자취준비
- 코딩테스트
- 후니의쉽게쓴시스코네트워킹
- leetcode
- 모여봐요동물의숲
- 프로그래머스
- 정보처리기사개정
Archives
- Today
- Total
따봉도치야 고마워
[프로그래머스] 소수만들기 본문
문제
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다.
숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
풀이1
1) 3중 for문으로 나올 수 있는 모든 경우의 합을 구해둔다.
2) 에라토스테네스 체 알고리즘으로 소수판별용 슬라이스를 만든다
3) 해당 슬라이스로 아까 구한 총합들의 소수 여부를 확인하고 answer ++
func solution(nums []int) int {
answer := 0
max := 0
var totalSum = make([]int, 0)
//모든 경우의 합을 구함
for i:=0; i<len(nums) -2; i++ {
for j:=i+1; j<len(nums) -1; j++ {
for k:=j+1; k<len(nums); k++ {
sum := nums[i] + nums[j] + nums[k]
totalSum = append(totalSum, sum)
if max<sum{
max = sum
}
}
}
}
//에라토스테네스의 체 알고리즘으로 소수판별용 슬라이스 만들기
var isPrime = make([]bool, max+1)
for i:=2; i<= max; i++{
if !isPrime[i]{
for j:=i+i; j<=max; j+=i{
isPrime[j] = true
}
}
}
//아까 구한 총합들 중 소수 판별
for i:=0; i<len(totalSum); i++{
if !isPrime[totalSum[i]]{
answer++
}
}
return answer
}
풀이2
1) 3중 for문으로 나올 수 있는 모든 경우의 합을 구한다.
2) 각각 소수 판별
import "math"
func isPrime(num int) bool{
for i:=2; i<=int(math.Sqrt(float64(num))); i++{
if num%i ==0{
return false
}
}
return true
}
func solution(nums []int) int {
answer := 0
for i:=0; i<len(nums) -2; i++ {
for j:=i+1; j<len(nums) -1; j++ {
for k:=j+1; k<len(nums); k++ {
if isPrime(nums[i] + nums[j] + nums[k]){
answer ++
}
}
}
}
return answer
}
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 해시 : 완주하지 못한 선수 (0) | 2020.05.19 |
---|---|
배열 최대 연속 부분합 4가지 알고리즘 (0) | 2020.04.09 |
[DP] 2*N 타일링 (0) | 2020.03.31 |
동적 계획법(Dynamic Programming) 과 탐욕법(Greedy Algorithm) (0) | 2020.03.26 |
[프로그래머스] 기능개발 (0) | 2020.03.24 |
Comments