- 진행
일자 | 완료 번호 |
24.07.16 | 1~20 |
24.07.17 | 21~35 |
24.07.18 | 36~42 |
24.07.19 | 43~47 |
24.07.22 | 48~50 |
24.07.23 | 51~55 |
24.07.24 | 56~57 |
24.07.25 | 58 |
- 회고
https://school.programmers.co.kr/learn/courses/30/lessons/12977
- 풀이과정
class Solution {
public int solution(int[] nums) {
int answer = 0;
int sum = 0;
for (int i = 0; i < nums.length - 2; i++) {
int l = i + 1;
int r = nums.length - 1;
while (l < r) {
sum = nums[i] + nums[l] + nums[r];
answer += prime(sum);
l++;
if(l >= r){
r--;
l = i + 1;
}
}
}
return answer;
}
public static int prime(int sum) {
int count = 0;
int sqrt = (int) Math.sqrt(sum);
for (int i = 1; i <= Math.sqrt(sum); i++) {
if (sum % i == 0) {
count++;
}
}
if (count > 1) {
return 0;
} else {
return 1;
}
}
}
- 우선 소수를 확인하는 함수를 따로 구현함
- 처음에는 삼중for문을 사용하여 구현하려 했으나 이전에 풀었던 문제중 Two Pointer알고리즘이 생각나 위와같이 구현
- l의 초기화와 r의 감소 조건을 생각하는데 오래걸림
※ 해당 문제의 경우 3중 for문이 투포인터보다 빠르게 나옴
'Java & Spring > 코딩테스트' 카테고리의 다른 글
11일차 - 알고리즘 코드카타 (0) | 2024.07.29 |
---|---|
10일차 - 알고리즘 코드카타 (0) | 2024.07.26 |
8일차 - 알고리즘 코드카타 (0) | 2024.07.24 |
7일차 - 알고리즘 코드카타 (0) | 2024.07.23 |
6일차 - 알고리즘 코드카타 (0) | 2024.07.22 |