728x90
- 첫 코드
class Solution {
public int solution(int[] nums) {
int answer = 0;
int len = nums.length;
int flag = 1;
for(int i=0; i<len-2; i++){
for(int j=i+1; j<len-1; j++){
for(int k=j+1; k<len; k++){
int sum = nums[i] + nums[j] + nums[k];
for(int m=2;m<sum;m++){
if(sum%m==0){
flag = 0;
break;
}
}
if(flag==1) answer++;
flag = 1;
}
}
}
return answer;
}
}
- 소수인지 확인하는 부분에서 m<=(int)Math.sqrt(sum) 으로 수정했더니 걸리는 시간이 크게 향상됨
for(int m=2;m<=(int)Math.sqrt(sum);m++){
if(sum%m==0){
flag = 0;
break;
}
- 유지보수성이 좋은 코드: 소수 확인 부분을 함수로 분리
class Solution {
public int solution(int[] nums) {
int answer = 0;
int len = nums.length;
for(int i=0; i<len-2; i++){
for(int j=i+1; j<len-1; j++){
for(int k=j+1; k<len; k++){
int sum = nums[i] + nums[j] + nums[k];
if(IsPrime(sum)) answer++;
}
}
}
return answer;
}
public boolean IsPrime(int n) {
for(int i=2;i<=(int)Math.sqrt(n);i++){
if(n%i==0) return false;
}
return true;
}
}
'알고리즘 > 코딩 테스트 문제' 카테고리의 다른 글
[프로그래머스] 실패율(Java) (0) | 2023.10.17 |
---|---|
[프로그래머스] 기사단원의 무기(Java) (0) | 2023.10.16 |
[프로그래머스] 카드 뭉치(Java) (0) | 2023.10.11 |
[프로그래머스] [1차] 비밀지도(Java) (0) | 2023.10.11 |
[프로그래머스] 문자열 내림차순으로 배치하기(Java) (0) | 2023.10.10 |