본문 바로가기

algorithm2

프로그래머스 소수만들기 문제(javaScript) 프로그래머스 소수만들기 문제 설명 숫자가 담긴 배열에서 서로 다른 3개의 숫자의 합이 소수인 경우의 개수를 구하는 문제이다. ex) [1,2,3,4]이 주어지면, 1+2+4 = 7 의 경우만 소수이기 때문에 1을 리턴해야한다. 우선 3개의 숫자를 조합해서 나올 수 있는 합을 알아야하기 때문에 3중 for문을 사용하였다. 그리고 isPrime이라는 소수판별 함수를 만들어 3개 숫자의 합이 만들어질때, isPrime의 인자로 넣었다. 이렇게 되면 isPrime의 결과로 소수이면 true, 소수가 아니면 false가 나오게 된다. 그래서 true가 나올때마다 result값을 하나씩 증가시켜 마지막에 result를 리턴하였다. function solution(nums) { //1. 3중 for문을 사용하여 nu.. 2021. 11. 30.
프로그래머스 - 피보나치 수 문제 피보나치 수는 0,1,1,2,3,5,8,13,21 ... 이런식으로 전의 수와 전전의 수를 더한 값이 계속 이어지는 수열이다. 처음에는 단순하게 재귀함수로 풀어 보았다. function solution(n) { if (n === 0) return 0; if (n === 1) return 1; return (solution(n - 1) + solution(n - 2)) % 1234567; }처음 0과 1은 그대로 리턴하고 3번째 숫자(인덱스2)부터 규칙을 적용하여 재귀로 풀었다. 하지만, 큰 수가 들어갈 때는 재귀하는 횟수가 많아 콜스택 에러, 런타임 에러가 났다. 또, 함수를 한번 호출하면 두번의 호출을 더 하기 때문에 시간 복잡도는 O(2^n)으로 매우 비효율적이다. 사진처럼 단지, 피보나치의 7번째 .. 2021. 11. 8.