Algorithms 3

[Algorithms] 연속된 자연수의 합 (프로그래머스-숫자의표현)

프로그래머스 Lv.2 문제를 풀다가 오랜만에 접근법이 떠오르지 않아 고민을 오래한 문제를 직면했다. 문제 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. 제한사항 n은 10,000 이하의 자연수 입니다. 코드 function solution(n) { let answer = 0; let sum = 1; let i ..

Algorithms 2024.01.24

[Algorithms] 에라토스테네스의 체 - 소수 판별하기

에라토스테네스의 체란? 💡 가장 대표적인 소수(Prime Number) 판별 알고리즘. 소수를 대량으로 빠르고 정확하게 구하는 방법이다. 소수 (Prime Number) 양의 약수를 두개만 가지는 자연수 1은 소수가 아니다 ex) 2, 3, 5, 7, 11, ... 등의 자연수 에라토스테네스의 체를 왜 알아야 할까? 프로그래머스의 Lv.1 소수찾기 문제이다. 1부터 숫자 N까지에 존재하는 소수의 개수를 구하고자 할 때, 일반적으로 아래와 같은 코드를 짜곤한다. const answer = []; for (let i=2; i

Algorithms 2023.12.07

[Algorithms] 유클리드 호제법 - 최대공약수와 최소공배수

코딩테스트 문제를 풀면서 코드 한줄이라도 맞으면서 배우자는 마인드를 가지고 있었다. 하지만, 최대공약수 문제를 마주할 때 마다 유클리드 호제법을 알고 작성한 코드와 모르고 작성한 코드는 확연한 차이를 보이는 걸 알 수 있었다. 남들보다 for, if문을 불필요하게 많이 작성했던 지난 날의 코드를 반성하며 유클리드 호제법에 대해 알아보자. 유클리드 호제법이란? 💡 유클리드에 의해 기원전 300년경에 발견된 가장 오래된 알고리즘. 두 수의 최대공약수를 구하는 알고리즘. 최대공약수를 안다면 최대공배수도 쉽게 구할 수 있다. 최대공약수 (Greatest Common Divisor, GCD) 두 수가 공통적으로 가지고 있는 약수 중 가장 큰 수 최소공배수 (Lowest Common Multiple, LCM) 두 ..

Algorithms 2023.11.17