https://programmers.co.kr/learn/courses/30/lessons/12977
내가 푼 방법
내가 풀려고 시도한 방법은 우선 배열에서 3개의 수를 3중 for문으로 더하고
그 수가 2부터 자기 자신 전까지의 수 중에서 나누어지는게 있는지 찾는다.
3중 for문을 사용해서 시간 복잡도가 엉망인 코드이다.
코드
class Solution {
public int solution(int[] nums) {
int answer = 0;
int n;
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++){
n = nums[i] + nums[j] + nums[k];
for(int l = 2; l < n+1; l++){
if(n % l == 0 && l != n) break;
else if(l == n) answer++;
}
}
return answer;
}
}
다른 사람의 풀이
아하 이분도 나랑 똑같이 풀었다. 다만 함수를 따로 만들어서 코드를 깔끔하게 했고
소수임을 검사할 때 2~n까지 모두 나누어보는게 아니라 2~루트2 까지만 검사했다. (이거 했다가 바꿨는뎅..)
다들 이렇게 풀었네....? 저게 정석 코드인가보다....
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 폰켓몬 for JAVA (0) | 2021.12.13 |
---|---|
[프로그래머스] K번째수 for JAVA (0) | 2021.12.08 |
[프로그래머스] 내적 for JAVA (0) | 2021.11.25 |
[프로그래머스] 음양 더하기 for JAVA (0) | 2021.11.25 |
[프로그래머스] 없는 숫자 더하기 for JAVA (0) | 2021.11.25 |