본문 바로가기

알고리즘

(3)
위상정렬 알고리즘 위상정렬 : 사이클이 없는 방향 그래프의 모든 노드를 방향성에 거스르지 않도록 순서대로 나열하는 것 ex) 선수과목을 고려한 학습 순서 결정 진입차수와 진출차수 진입차수 : 특정한 노드로 들어오는 간선의 개수 진출차수: 특정한 노드에서 나가는 간선의 개수 위상정렬 알고리즘 : DFS 구현, 큐 구현 가능 큐를 이용하는 위상 정렬 알고리즘의 동작 과정 진입차수가 0인 모든 노드를 큐에 넣는다. 2, 큐가 빌 때까지 다음의 과정반복 1) 큐에서 원소를 꺼내 해당 노드에서 나가는 간선을 그래프에서 제거한다. 2) 새롭게 진입차수가 0이 된 노드를 큐에 넣는다. 결과적으로 각 노드가 큐에 들어온 순서가 위상 정렬을 수행한 결과와 같다. 위상정렬의 특징 · DAG에 대해서만 수행 DAG: 순환하지 않는 방향 그래..
프로그래머스 과일 장수 파이썬 python def solution(k, m, score): #k:최고점, m:갯수 answer = 0 score = sorted(score, reverse = True) for i in range(0,len(score),m): box = score\[i:i+m\] if len(box) == m: answer += min(box)\*m return answer score를 내림차순 정렬 한 후 m개씩 잘라서 최솟값(min) * m 을 answer에 계속 더해주다가 반환
프로그래머스 최빈값 구하기 파이썬 python def solution(array): count = [0]*(max(array)+1) for i in array: count[i] += 1 m=0 for c in count: if c== max(count): m += 1 if m>1: return -1 else: return count.index(max(count)) count = [0]*(max(array)+1) : 입력된 배열(array)의 최댓값(max)에 1을 더한 크기의 리스트를 생성 ex) array = [2,4,3]면 max(array) = 4 1을 더하면 5 count = [0,0,0,0,0] 초기화 +1하는 이유: array 배열의 값이 0부터 시작하기 때문에 최댓값이 4이면 +1을 해줘야 0 1 2 3 4 가능 return count...