완전 탐색(Brute Force)
·
알고리즘
‘무식하게 푼다(brute-force)’ 는 컴퓨터의 빠른 계산 능력을 이용해 가능한 경우의 수를 일일이 나열하면서 답을 찾는 방법을 의미합니다.이렇게 가능한 방법을 전부 만들어 보는 알고리즘을 완전 탐색이라고 부릅니다. 재귀 호출재귀 함수(recursive function)란 자신이 수행할 작업을 유사한 형태의 여러 조각으로 쪼갠 뒤 그중 한 조각을 수행하고, 나머지를 자기 자신을 호출해 실행하는 함수를 가리킵니다.재귀 호출의 기초적인 성질을 이해하기 위해 가장 간단한 반복문을 재귀 함수로 바꿔 구현해 봅시다.int sum(int n){ // 반복함수 int ret=0; for(int i=1;i모든 재귀 함수는 ‘더 이상 쪼개지지 않는’ 최소한의 작업에 도달했을 때 답을 곧장 반환하는 조건문을 포함해야..
[알고리즘] 시간 복잡도
·
알고리즘
시간 복잡도시간 복잡도(time complexity)란 가장 널리 사용되는 알고리즘의 수행 시간 기준으로, 알고리즘이 실행되는 동안 수행하는 기본적인 연산의 수를 입력의 크기에 대한 함수로 표현한 것입니다.일반적으로 점근 표기법을 사용하여 시간 복잡도를 나타내며, O(⋯) 형태로 표기합니다. O(⋯) 안에는 입력 크기(n)에 따른 실행 횟수를 함수로 표현합니다.  O(1) n2) n3) 2n)  O(1): 상수 시간 복잡도입력 크기에 상관없이 일정한 시간이 걸리는 알고리즘예: 주로 수학 공식등을 이용해 답을 바로 계산해내는 문제O(log n): 로그 시간 복잡도입력 크기가 커질수록 실행 시간이 느리게 증가예: 이진 탐색(Binary Search)O(n): 선형 시간 복잡도입력 크기에 비례하여 실행 시간이..