알고리즘

알고리즘/소수 구하기 - 에라토스테네스의 체

에라토스테네스의 체 알고리즘 - 소수 구하기 알고리즘

우리는 에라토스테네스의 체(Sieve of Eratosthenes)라는 방법을 통해 보다 쉽게 소수를 찾아낼 수 있습니다. 이름 그대로 체를 통해 무언가를 걸러내듯이 소수를 찾는 방법입니다. 일반적으로 소수만 구하려면 2중 for문을 이용해 시간 복잡도는 O(N^2)라고 판단할 수 있다. 에라토스테네스의 체 알고리즘을 이용하면 시간 복잡도는 O(Nlog(logN))이다. 배수를 삭제하는 연산으로 바깥 for문을 생략하는 경우가 발생하기 때문이다. 찾을 범위까지 수를 나열한 다음, 소수가 아닌 1을 지웁니다. 1 다음으로 큰 소수인 2를 남겨두고 2의 배수를 모두 지웁니다. 2 다음으로 큰 소수인 3을 남겨두고 3의 배수를 모두 지웁니다. prime(n) 다음으로 큰 소수인 prime(n+1)을 남겨두고 ..

알고리즘/투 포인터

투 포인터 알고리즘에 대한 설명 + 백준 - 수들의 합2_2003번 문제 풀이

투 포인터 개념 각 원소마다 모든 값을 순회해야할 때, *연속하다는 특성을 이용해서 처리, 단순 반복문을 이용해서 문제를 해결하려고 하면, 시간 복잡도가 O(N^2), O(N^3)인 경우가 있기 때문에 투 포인터 알고리즘을 이용해서 문제를 해결해야 된다. 포인터 2개가 1차원 배열을 증가하는 방향으로만 순회하므로 O(N) + O(N) = O(N) 이 알고리즘을 처음 접했을 때 어려웠는데 이제는 기본적인 문제는 풀 수 있게 되었다. 그만큼 계속 반복함! https://www.acmicpc.net/problem/2003 이 문제를 기반으로 설명을 하겠따. n개로 나열 된 수, +해서 m이되는 경우의 수를 구하자 - 자연수로 이루어진 1차원 배열이 주어진다. - 연속되는 부분 배열 중 원소의 합이 M이 되는 ..

초보병일이
'알고리즘' 카테고리의 글 목록