class Solution {
public int solution(int[] nums) {
int limit = nums.length;
int answer = 0;
int cursor1 = 0;
int cursor2 = 1;
int cursor3 = 2;
while(cursor1<limit-2){
while(cursor2<limit-1){
while(cursor3<limit){
int numChk = nums[cursor1] + nums[cursor2] +nums[cursor3];
for(int i=2;i<=numChk;i++){
if(i==numChk){answer++;break;}
if(numChk%i==0){break;}
}
cursor3++;
}
cursor2++;
cursor3=cursor2+1;
}
cursor1++;
cursor2=cursor1+1;
cursor3=cursor1+2;
}
return answer;
}
}
숫자를 주어진 그룹에서 3개를 고른 후 그것의 합이 소수 인 경우에 answer가 1늘어나는 구조이다.
이때 모든 경우의수를 더해보기 위해
자리수를 3개로 정해둔 후 그것을 각각 커서1,2,3으로 정했다.
예를 들어 숫자가 5개일때 검사하는경우의수는 5C3으로 10가지 이지만 그것을 하나하나 검색하는 로직은
0 | 1 | 2 |
0 | 1 | 3 |
0 | 1 | 4 |
0 | 2 | 3 |
0 | 2 | 4 |
0 | 3 | 4 |
1 | 2 | 3 |
1 | 2 | 4 |
1 | 3 | 4 |
2 | 3 | 4 |
이와 같다. 첫번째 자리를 0으로 고정 한 후 두번째자리를 1로 고정한다.
그리고 세번째 자리를 끝까지 탐색 한 후
두번째자리를 1 증가시킨 후 세번째자리를 두번째자리보다 1큰 숫자로 정해준 후 다시 탐색
두번째자리가 마지막숫자보다 1 작을 경우 탐색을 마친뒤
첫번째 자리를 증가시킨후 두번째자리를 그것보다1, 세번째자리를 그것보다 2 크게 정해 준 후 탐색을 반복한다.
'Coding Test > JAVA 코딩테스트 풀이정리(프로그래머스)' 카테고리의 다른 글
프로그래머스 스쿨 Lv.1 - 성격 유형 검사하기(2022 KAKAO TECH INTERNSHIP) (0) | 2023.12.14 |
---|---|
프로그래머스 스쿨 Lv.1 - 바탕화면 정리 (0) | 2023.12.14 |
프로그래머스 스쿨 Lv.1 - 카드뭉치 (0) | 2023.12.12 |
프로그래머스 스쿨 Lv.1 - 옹알이(2) (0) | 2023.12.12 |
프로그래머스 스쿨 Lv.1 - 모의고사 (0) | 2023.12.10 |