- 진행
| 일자 | 완료 번호 | 
| 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
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 풀이과정
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일차 - 알고리즘 코드카타 (1) | 2024.07.29 | 
|---|---|
| 10일차 - 알고리즘 코드카타 (0) | 2024.07.26 | 
| 8일차 - 알고리즘 코드카타 (1) | 2024.07.24 | 
| 7일차 - 알고리즘 코드카타 (0) | 2024.07.23 | 
| 6일차 - 알고리즘 코드카타 (1) | 2024.07.22 |