👌 숫자 3개를 골라서 더 해주어야 하므로, i, j , l 모두 for문 돌려서 찾아야 한다.
for(var i=0; i<nums.length; i++){
for(var j=i+1; j<nums.length; j++){
for(var l=j+1; l<nums.length; l++)
nums가 [1,2,3,4]라고 할 때,
i=0,1,2,3을 모두 가지게 되면
j=1,2,3,4가 되니까 nums[4]의 값은 존재하지 않게 된다.
즉, nums.length의 길이가 한 개씩 줄어야 하는것.
for(var i=0; i<nums.length-2; i++){
for(var j=i+1; j<nums.length-1; j++){
for(var l=j+1; l<nums.length; l++)
👌 세 개를 더한 값이므로
먼저 변수를 위에 var number = 0 으로 지정해주고
number = nums[i] + nums[j] + nums[l]
👌 이 number가 소수인지 아닌지 판별하려면, 자연수로 나누었을 때 0으로 나누어지는데 그 자연수가 2개여야 한다.
예를 들어, 11을 0으로 나누어지게 하는 수는 1,11로 2개로 소수이다.
4를 0으로 나누어지게 하는 수는 1,2,4로 3개로 소수가 아니다.
그럼 이렇게 number를 자연수로 나누었을 때 0이 되는 자연수가 2개이면 된다.
if(number % k == 0) 라고 하기 위해선, k 가 자연수면서 상승해야 하니까
for(var k=1; k<=number; k++){
if(number % k == 0)
여기서 number를 k로 나누었을 때 0이 되는 자연수의 개수를 세야 하니까
var count = 0
for(var k=1; k<=number; k++){
if(number % k == 0) count++
count라는 변수를 주고, 개수를 세라고 한다.
👌 소수이려면, 이 개수가 2여야 하므로
if(count == 2) answer++
이렇게 자연수의 개수가 2이면 소수라고 판별이 되었기 때문에, answer로 꺼내준다.
✅ 최종 코드
function solution(nums) { var answer = 0, number=0; for(var i=0;i<nums.length-2;i++){ for(var j=i+1;j<nums.length-1;j++){ for(var l=j+1;l<nums.length;l++){ number=nums[i]+nums[j]+nums[l]; var count=0; for(var k=1;k<=number;k++){ if(number%k==0) count++; } if(count==2) answer++; } } } return answer; } |
'알고리즘 스터디 > [프로그래머스] 월간 코드 챌린지 시즌1' 카테고리의 다른 글
[알고리즘] 시저 암호 문제풀이(자바스크립트 javascript) (0) | 2022.07.21 |
---|---|
[알고리즘] 숫자 문자열과 영단어 문제풀이(자바스크립트 javascript) (0) | 2022.07.21 |
[알고리즘] 문자열 내림차순으로 배치하기 문제풀이(자바스크립트 javascript) (0) | 2022.07.21 |
[알고리즘] 문자열 내 마음대로 정리하기 문제풀이(자바스크립트 javascript) (0) | 2022.07.21 |
[알고리즘] 모의고사 문제풀이(자바스크립트 javascript) (0) | 2022.07.20 |