정렬3 [Java] 위상정렬 위상 정렬은 특정 수강과목에서 선수과목이 있을 경우 어떤 순서로 들어야 하는지 순서를 쉽게 찾아낼 수 있는 알고리즘입니다. 이때, 위상 정렬을 위해서는 그래프는 방향이 있어야 하고 사이클이 없는 DAG(Directed Acyclic Graph) 여야만 합니다. 위상 정렬 방법(Queue 사용) 1. 진입 차수 즉, 특정 노드로 들어오는 간선의 개수를 알아내기 위해 in 배열의 크기를 정점의 개수만큼 만듭니다. 2. 특정 노드로 들어오는 간선이 있을 때마다 in 배열의 크기를 +1 해줍니다. ex) 예를 들어, 위 이미지와 같은 DAG가 있다면 진입 차수는 1 2 3 4 진입 차수 0 1 0 3 와 같이 됩니다. 3. 큐를 만들고 진입 차수가 0인 노드를 전부 큐에 삽입합니다. 4. 큐에 아무것도 남지 않.. 2021. 5. 11. [Python] 프로그래머스 파일명 정렬 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 풀이 cmp_to_key를 사용해 정렬 조건을 만들어 해결했습니다. 코드 from functools import cmp_to_key def solution(files): answer = [] files_list = list() for file in files: temp = "" flag = False file_info = list() for idx in range(len(file)): temp += file[idx] if file[idx].isdigi.. 2021. 4. 25. [Python] dict 정렬 answer = [] rate = {} ''' rate에 dict에 맞는 값 추가 ''' answer = sorted(rate, key=lambda x: rate[x], reverse=True) # answer에는 rate의 정렬된 순서에 맞게 key값만 들어간다 위의 코드는 sorted를 이용 rate의 value 값으로 내림차순 정렬하는 코드입니다. 마지막에 list 자료형인 answer에 저장하게하여 rate의 key 값만 저장하게합니다. 오름차순을 하고자하면 reverse=True를 없에주면 됩니다. 2021. 3. 6. 이전 1 다음