Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- Java
- 오라클
- JPA
- 스프링
- mybatis
- JavaScript
- 자바
- Spring
- GitHub
- 에러
- Eclipse
- 쿼리
- Security
- 함수
- Vue
- db
- aws
- Git
- 생성
- kotlin
- 방법
- 코틀린
- 프로그래머스
- error
- IntelliJ
- oracle
- 넥사크로
- jquery
- 알고리즘
- 시큐리티
Archives
- Today
- Total
송민준의 개발노트
[프로그래머스] 소수 만들기 본문
https://programmers.co.kr/learn/courses/30/lessons/12977?language=java
소수 알고리즘을 활용해서 계산하는 문제.
약수의 성질을 이용해서 2부터 주어진 수의 제곱근까지 확인만 하면 된다.(성능 개선)
약수의 성질?
- 모든 약수는 가운데 약수를 기준으로 곱셈 연산에 대해 대칭적인 구조
- ex) 16의 약수는 1, 2, 4, 8, 16 => 1 x 16, 2 x 8, 4 x 4
- 그러므로 특정한 자연수의 모든 약수를 찾을 때 가운데까지만 확인하면 됨.
class Solution {
public int solution(int[] nums) {
int answer = 0;
// 3가지 조합이니 3번 돌림
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(isPrimeNumber(nums[i] + nums[j] + nums[k])) {
answer++;
}
}
}
}
return answer;
}
// 약수 체크
public boolean isPrimeNumber(int v) {
for(int i = 2; i <= Math.sqrt(v); i++) {
if(v % i == 0) {
return false;
}
}
return true;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 짝지어 제거하기 (0) | 2022.05.08 |
---|---|
[프로그래머스] 단체사진 찍기 (0) | 2022.05.07 |
[프로그래머스] 카카오프렌즈 컬러링북 (0) | 2022.04.30 |
[프로그래머스] 오픈채팅방 (0) | 2022.04.28 |
[프로그래머스] 더 맵게 (0) | 2022.04.25 |