Array(List)의 특징과 장단점 Array 배열을 활용하면 순차적으로 데이터를 저장한다는 특징이 있습니다. 데이터에 순서가 있기 때문에 0부터 시작하는 index가 존재하며, index를 사용해 특정 요소를 찾고 수정이 가능합니다. 순차적으로 존재하는 데이터의 중간에 요소가 삽입되거나 삭제되는 경우 그 뒤의 모든 요소들이 한 칸씩 뒤로 밀리게 됩니다. 순서가 중요한 자료구조에서 순서를 보장해주는 Array를 활용하는 것이 좋습니다. Kotlin에서의 Array와 List array는 사이즈가 할당되어져 있고, Mutable 타입이므로 수정이 가능합니다. 인덱스를 참조해서 값을 수정할 수 있다는 장점이 있습니다. 리스트는 순서가 있고, 사이즈는 자동할당되며 대부분 수정이 불가능한 ImmutableLi..
코테를 준비하면서 자주 사용하는 알고리즘 & 함수를 정리합니다. Queue 선입 선출의 구조로 queue 라이브러리를 사용합니다. import queue data = queue.Queue() print(type(data)) queue에 데이터 넣기 data.put(2) data.put(3) data.put(4) 데이터 출력 print(data.get()) print(data.get()) print(data.get()) Stack 후입 선출 구조로 별도 라이브러리 없이 파이썬의 리스트를 사용합니다. stack = [] 데이터 넣기 stack.append(2) stack.append(3) stack.append(4) 데이터 출력 print(stack.pop()) print(stack.pop()) print(..
위상 정렬 알고리즘 (Topology Sort) 위상 정렬이란 사이클이 없는 방향 그래프의 모든 노드를 방향성에 거스리지 않도록 순서대로 나열하는 것이다. ex> 선수 과목을 고려한 학습 순서 결정 (우선순위) 선수 과목구조란 여러 수강 과목이 존재하는 경우 "c언어 과목을 들어야 알고리즘 강의를 수강할 수 있다" 라는 규칙을 지켜서 수강 신청을 하는 것을 말한다. 즉 어떤 그래프를 위상 정렬하면 그 결과로 정점들을 원소로 가지는 위상적 순서대로 정렬된 배열이 된다. 진입 차수 : 특정 노드로 들어오는 간선의 수 진출 차수 : 특정 노드에서 나가는 간선의 수 큐를 이용한 위상 정렬 알고리즘 파이썬을 통해서 위상정렬을 구현할 경우 큐를 활용한다. 위상 정렬 알고리즘의 규칙은 아래와 같다. 1. 모든 정점을..