목록코딩테스트/이것이 코딩테스트다.(Python) (21)
초보 개발자의 일기

트리 자료구조 노드와 노드의 연결로 표현하며, 노드는 정보는 단위로서 어떠한 정보를 가지고 있는 개체로 이해 가능하다. 트리 자료구조의 특징 트리는 부모 노드와 자식 노드의 관계로 표현 트리의 최상단 노드는 루트 노드 트리의 최하단 노드는 단말 노드 트리에서 일부를 떼어내도 트리 구조이며 이를 서브 트리 트리는 파일 시스템과 같이 계층적이고 정렬된 데이터를 다루기에 적합 이진 탐색 트리 트리 자료구조에서 가장 간단한 형태 이진 탐색이 동작할 수 있도록 고안된, 효율적인 탐색이 가능한 자료구조이다. 이진 탐색 트리의 특징 부모 노드보다 왼쪽 자식 노드가 작다. 부모 노드보다 오른쪽 자식 노드가 크다. 빠르게 입력받기 이진 탐색 문제는 입력 데이터가 많거나, 탐색 범위가 매우 넓다. 이런 입력 데이터가 많은..

순차 탐색 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 1. 첫 번째 데이터를 확인한다. 9는 찾으려는 8과 같지 않다. 다음 데이터로 이동 2. 두 번째 데이터를 확인한다. 5는 찾으련는 8과 같지 않다. 다음 데이터로 이동 3. 세 번재 데이터를 확인한다. 8은 찾으려는 8과 같다. 탐색 종료 순차 탐색 코드 # 순차 탐색 소스코드 구현 def sequential_search(n, target, array): # 각 원소를 하나씩 확인하며 for i in range(n): # 현재의 원소가 찾고자 하는 원소와 동일한 경우 if array[i] == target: return i + 1 # 현재의 위치 반환 (인덱스는 0부터 시작하므로 1 더하기) re..

문제 N, K, 그리고 배열 A와 B의 정보가 주어졌을 때, 최대 K번의 바꿔치기 연산을 수행하여 만들 수 있는 배열 A의 모든 원소의 합의 최댓값을 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에 N, K가 공백으로 구분되어 입력된다. (1
문제 N명의 학생 정보가 있다. 학생 정보는 학생의 이름과 학생의 성적으로 구분된다. 각 학생의 이름과 성적 정보가 주어졌을 때 성적이 낮은 순서대로 학생의 이름을 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에 학생의 수 N이 입력된다. (1
문제 하나의 수열에는 다양한 수가 존재한다. 이러한 수의 크기에 상관없이 나열되어 있다. 이수를 큰 수부터 작은 수의 순서로 정렬해야 한다. 수열을 내림차순으로 정렬하는 프로그램으로 만드시오 사진자리 입력 첫째 줄에 수열에 속해 있는 수의 개수 N이 주어진다. (1
정렬 라이브러리 sorted() 퀵 정렬과 동작 방식이 비슷한 병합 정렬을 기반으로 만들어졌다. 리스트 딕셔너리 자료형 등을 입력받아서 정렬된 결과를 출력한다. sorted 소스코드 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] result = sorted(array) print(result) 결과 [0,1,2,3,4,5,6,7,8,9] key를 활용한 소스코드 array = [('바나나', 2), ('사과', 5), ('당근', 3)] def setting(data): return data[1] result = sorted(array, key=setting) print(result) 결과 [('바나나',2), ('당근',3), ('사과',5)] 정렬 라이브러리 시간 복잡도 최악의..

퀵 정렬 퀵 정렬은 가장 많이 사용되는 알고리즘이다. 퀵 정렬에서는 피벗이 사용된다. 큰 숫자와 작은 숫자를 교환할 때, 교환하기 위한 기준을 피벗이라고 한다. 퀵 정렬을 사용할 때는 피벗을 미리 명시해야 한다. 피벗을 정하는 방식은 여러 가지가 있는데 호어 분할을 이용해 설명한다. 리스트에서 첫 번째 데이터를 피벗으로 정한다. 그 후 왼쪽에서부터 피벗보다 큰 데이터를 찾고, 오른쪽에서부터 피벗보다 작은 데이터를 찾는다. 다 찾으면 데이터를 서로 교환한다. 이런 과정을 반복하며 정렬을 한다. 피벗은 5로 정한다. 그 후 왼쪽에서 5보다 큰 값, 오른쪽에서 5보다 작은 값을 찾는다. 왼쪽에서는 7, 오른쪽에서는 4가 선택됐다. 그 후 자리를 바꾼다. 5 4 9 0 3 1 6 2 7 8로 정렬이 되었다. 이..

선택 정렬 가장 작은 데이터를 선택해 맨 앞의 데이터와 바꾸고, 그다음 작은 데이터를 선택해 앞에서 두 번째 데이터와 바꾸고 계속 반복하며 정렬하는 방법 파이썬으로 구현한 선택 정렬 코드 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)): min_index = i # 가장 작은 원소의 인덱스 for j in range(i + 1, len(array)): if array[min_index] > array[j]: min_index = j array[i], array[min_index] = array[min_index], array[i] # 스와프 print(array) 이 코드에서 스와프를 사용했는데 스와프는 특정한 리스트가 주어졌을 때 두..