https://school.programmers.co.kr/learn/courses/30/lessons/12977
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Algorithm
소수 판별 함수 기억하자.
- 먼저, 주어진 수 n이 2보다 작을 때는 소수가 될 수 없으므로 False를 반환
- 그런 다음, n이 2보다 크거나 같을 때까지 2부터 n의 제곱근까지의 숫자로 나눠보며 소수인지를 확인
- 만약 어떤 수로도 n을 나눌 수 없으면(나머지가 0이 되지 않으면) 소수
def is_prime(n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
※ 내가 한 실수
math.sqrt() 함수는 제곱근을 반환하는 함수이지만, 반환 값은 실수형이다. range() 함수는 정수를 요구하므로 오류가 발생했다 -> int 형변환을 해주었다.
Python
import itertools
import math
def is_prime(n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
def solution(nums):
ans = 0
comb = list(itertools.combinations(nums,3)) # 3개 조합 생성
for c in comb:
if is_prime(sum(c)):
ans += 1
return ans
Java
import java.util.Arrays;
class Solution {
public int solution(int[] nums) {
int ans = 0;
for(int i = 0; i < nums.length - 2; i ++){
for(int j = i + 1; j < nums.length - 1; j ++){
for(int k = j + 1; k < nums.length; k ++ ){
if(isPrime(nums[i] + nums[j] + nums[k])){
ans += 1;
}
}
}
}
return ans;
}
public Boolean isPrime(int num){
int cnt = 0;
for(int i = 1; i <= (int)Math.sqrt(num); i ++){
if(num % i == 0) cnt += 1;
}
return cnt == 1;
}
}
'자료구조&알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] 점프와 순간 이동 (JAVA, PYTHON) (0) | 2023.11.03 |
---|---|
[Programmers] 영어 끝말잇기 (JAVA, PYTHON) (1) | 2023.11.03 |
[Programmers] 예산 (JAVA, PYTHON) (0) | 2023.11.03 |
[Programmers] 할 일 목록 (JAVA, PYTHON) (0) | 2023.10.10 |
[Programmers] 5명씩 (JAVA, PYTHON) (0) | 2023.10.10 |