9. 기타 알고리즘: 소수 판별, 에라토스테네스의 체 알고리즘
소수: 1보다 큰 자연수 중에서 1과 자신을 제외한 자연수로는 나누어 떨어지지 않는 수 이걸 코드로 그대로 옮기면 def is_prime_number(x): for i in range(2,x): if x%i==0: return False return True 이렇게 간단하게 쓸 수 있다 숫자가 X일 때 시간복잡도는 O(X)가 된다 여기서 약수의 성질을 이용하면 시간복잡도를 줄일 수 있다 모든 약수가 가운데 약수를 기준으로 곱셈 연산에 대해 대칭을 이룬다 예를 들어 16의 약수는 1, 2, 4, 8, 16인데, 1*16=16, 2*8=16으로, 4를 기준으로 대칭이다 따라서 특정한 자연수의 모든 약수를 찾을 때, 가운데 약수(제곱근)까지만 확인하면 된다 이것을 소수판별 알고리즘에 적용시키면 import m..
2022. 8. 14.
최단 경로 알고리즘 예제: 전보
도시가 n개 있고 통로가 m개 있다. c도시에서 메세지를 보낼 건데, 총 몇 개의 도시에 메세지를 보낼 수 있으며 메세지가 도달하는데 걸릴 시간은 어떻게 되겠는가? 노드개수n, 간선개수m, 출발지점 c를 입력받고 c에서 출발하는 모든 최단거리를 계산하고, 최단거리가 INF가 아닌 값들의 개수, 최단거리 중 가장 큰 값을 찾아 출력하면 된다 import sys, heapq input=sys.stdin.readline INF=int(1e9) n,m,c=map(int,input().split()) #노드개수 n, 간선개수 m, 출발지점c graph=[[]for i in range(n+1)] #노드 연결정보를 저장할 그래프 for i in range(m): x,y,z=map(int,input().split())..
2022. 7. 27.