CS/Algorithm 2

[알고리즘] 시간복잡도와 공간복잡도

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

CS/Algorithm 2021.08.16

[알고리즘] 소수 판별 알고리즘(파이썬)

소수 판별 알고리즘에 대해서 정리할 필요성을 느껴 정리해본다. 소수(Prime Number)란 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 자연수로는 나누어떨어지지 않는 자연수이다. 가장 기본적인 소수 판별 함수 # 1. 가장 기본적인 소수 판별 함수 def is_prime_number(x): # 2부터 (x - 1)까지의 모든 수를 확인하며 for i in range(2, x): # x가 해당 수로 나누어떨어진다면 소수가 아니다. if x % i == 0: return False # 나누어지지 않고 반복문이 끝나면 소수이다. return True print(is_prime_number(4)) # 4는 소수가 아님 print(is_prime_number(7)) # 7은 소수임 2부터 x -1 사이에..

CS/Algorithm 2021.08.16