알고리즘을 공부하는 목표는 효율적인 알고리즘을 작성하기 위함에 있다. 효율적인 알고리즘은 수행을 시작하여 결과가 도출될 때까지 걸리는 시간이 짧고, 연산하는 컴퓨터 내의 자원(메모리 등)을 덜 사용하는 알고리즘이다. 일단 문제를 해결하는 것 말고도 더 빨리되고, 메모리를 덜 잡아먹는 알고리즘이 효율적이라는 소리이다. 시간 복잡도(Time Complexity) 시간 복잡도는 알고리즘을 수행하는 데 연산들이 몇 번 이루어지는 지를 숫자로 표기한다. 여기서 말하는 연산은 산술, 대입, 비교, 이동을 말한다. 연산은 보통 입력 데이터에 따라 변하므로 입력 데이터 N개를 기준으로 시간복잡도를 표현한다. 예시 # Case 1 sum = N * N # Case 2 sum = 0 for i in range(N): su..