이 문제를 접했을 때 재귀 함수로 하면 되지 않을까?라고 생각을 하였다. 2씩 곱해주다가 N값보다 커지면 -1을 해주고 다시 2를 곱해주는 방식으로 정확히 N이 나올 때까지 하는 것이다. 결과적으로 재귀함수로 작성하는데 실패했다. 너무 복잡하고 생각대로 풀리지 않았다. 다른 사람들의 풀이를 찾아봤는데 너무 간단하게 코딩을 하는 방법이 있었다. 나는 지금까지 bottm-up방식으로 0 부터 N까지 가는 방법으로 할려고 했다. 하지만 top-down 방식으로 하면 더욱 쉽게 풀린다는 것을 알게되었다.(N->0) 2로 나눠지면 2로 나누고, 안나눠지면 -1을 하고 하는 방식으로 완전히 bottom-up방식의 반대로 하면 된다. [참고한 풀이] https://velog.io/@hyeon930/프로그래머스-점프와..
에라토스테네스의 체를 이용하여 소수 구하는 방법 1. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 2. 2는 소수이므로 오른쪽에 2를 쓴다. 3. 자기 자신을 제외한 2의 배수를 모두 지운다. 4. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. 5. 자기 자신을 제외한 3의 배수를 모두 지운다. 6. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. 7. 자기 자신을 제외한 5의 배수를 모두 지운다. 8. 남아있는 수 가운데 7은 소수이므로 오른쪽에 7을 쓴다. 9. 자기 자신을 제외한 7의 배수를 모두 지운다. 10. 위의 과정을 반복하면 구하는 구간의 모든 소수가 남는다. prime[0],prime[1]은 각각 0,1 이므로 소수에서 제외. 2부터 2는 소수이므로(fal..
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. [제한사항] nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. 3개의 수를 합치고 중복은 없으니 모든 경우에 대해서 구하기 위해 삼중 for문을 사용하였다. 문제를 푼 후 생각해보니 제한사항 중에서 원소는 1000이하의 자연수 이므로 에라토스테네스의 체를 이용하여 nums의 값을 판별하면 좋겠다는 생각을 하였다. 하..