https://programmers.co.kr/learn/courses/30/lessons/12977?language=python3
3중 for문을 사용해서 각 숫자들의 조합을 더해 소수인지 판별하기만 하면 되는 문제이다
#javascript
function isPrime(n){
for (var i = 2; i<n ; i++){
if (n%i === 0){
return false;
}
}
return true
}
function solution(nums) {
var answer = 0;
for (var i=0 ; i<nums.length; i++){
for (var j= i+1; j<nums.length; j++){
for (var k = j+1; k < nums.length; k++){
if (isPrime(nums[i] + nums[j] + nums[k]) === true){
answer++;
}
}
}
}
return answer;
}
#python
def isPrime(n):
for i in range(2,n):
if n%i == 0:
return False
return True
def solution(nums):
answer = 0
for i in range(len(nums)):
for j in range(i+1,len(nums)):
for k in range(j+1,len(nums)):
if isPrime(nums[i]+nums[j]+nums[k]):
answer += 1
return answer
파이썬의 경우 itertools 의 combinations 사용으로 좀 더 쉽게 구현이 가능하다.
combinations는 요소의 조합을 반환해주는데
def isPrime(n):
for i in range(2,n):
if n%i == 0:
return False
return True
def solution(nums):
from itertools import combinations as cb
answer = 0
for i in cb(nums, 3):
if isPrime(sum(i)):
answer += 1
return answer
이렇게 cb로 별칭을 지정해서 조합의 결과물을 더한 값을 isPrime 함수를 통해 결과를 출력가능하다.
'알고리즘' 카테고리의 다른 글
[프로그래머스 javscript] 키패드 누르기 (0) | 2021.07.02 |
---|---|
[프로그래머스 python, javascript] 로또의 최고 순위와 최저 순위 (0) | 2021.07.01 |
[백준 파이썬 2667 ] DFS 단지번호붙이기 (0) | 2021.06.29 |
파이썬 DFS 등산경로 문제 (0) | 2021.06.29 |
[파이썬 15651] 백준 N과 M (3) DFS 중복순열 (0) | 2021.05.19 |
댓글