코딩테스트/알고리즘 2

백트래킹

DFS 가능한 모든 경로를 탐색하는 알고리즘. 백트래킹이란? 백트래킹은 DFS(Depth First Search; 깊이 우선 탐색)의 방식을 기반으로 불필요한 경우를 배제해가면서 답에 도달할 때까지 계속 탐색하는 전략이다. 즉 가지치기라고 할 수 있다. DFS를 기반으로 두기 때문에 스택을 이용해서 퇴각 하고 다음 탐색을 진행하기 때문에 백트래킹이라 불린다. 그래서 백준 15649의 풀이를 소개하며 정리하겠다. https://www.acmicpc.net/problem/15649 이 문제는 순열 문제로 4 2 가 주어진다면 [1 2] [1 3] [1 4] [2 1] ... [4 3] 이런식으로 중복되지 않게 하나씩 뽑아야한다. 이 때 바로 백트래킹을 쓰는것이 아주 적합하다. 두 가지 코드를 준비했다. 1...

에라토스테네스의 체

에라토스테네스의 체소수를 판별하는 알고리즘.소수를 대량으로 빠르고 정확하게 구하는 방법.실제로 코테 문제를 푸는데 시간초과에 늪에 빠져서 이 방법으로 해결한다.에라토스테네스의 체 원리2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다.2를 빼줘서 저장하면서 시작그 다음 모든 2의 배수를 제거 해준다.다음으로 3을 빼주면서 3에 대한 모든 배수를 제거해준다.4는 3번과정에서 지웠으므로 넘어가준다.5부터는 다시 5의 배수를 제거해준다.코드코드를 보기전에 간략하게 과정을 다시 설명하겠다.우리가 해야하는건 한가지 숫자를 정하고 그 숫자에 대한 배수를 모두 지워가면서 거르고 거르는 것이다.64로 예를 들면 루트 64인 8까지 배수들을 다 빼주면 64밑의 소수만 남게된다.그래서 검사를 제곱급까지만 해도 알아서 ..