본문 바로가기
반응형

알고리즘13

[문제] 선택 정렬 구현하기 문제반복문을 활용해 선택 정렬 알고리즘을 구현하세요.selection_sort() 함수는 data를 파라미터로 받아 선택 정렬 알고리즘을 실행해 오름차순으로 정렬합니다. 이 함수는 리스트를 정렬할 뿐 어떤 값을 리턴하지는 않습니다.실습 해설선택 정렬은 쉽게 말해서 가장 작은 값을 찾아서 0번 인덱스에 넣고, 두 번째로 작은 값을 찾아서 1번 인덱스에 넣고, 세 번째로 작은 값을 찾아서 2번 인덱스에 넣는 식으로 반복하는 정렬 알고리즘입니다. 반복문 구조조금 더 구체적으로 생각해 보죠. 선택 정렬을 하려면 다음과 같은 작업을 반복해야 합니다.리스트 전체에서 가장 작은 값을 0번 인덱스에 옮기고, 범위를 좁혀서 1번 인덱스부터 마지막 인덱스까지 값들 중에서 가장 작은 값을 1번 인덱스에 옮기고, 다시 범위를.. 2024. 8. 15.
[문제] 이진 탐색 구현하기 문제반복문을 사용해 이진 탐색 함수를 구현하세요.binary_search() 함수는 두 개의 파라미터를 받습니다.target: 찾고 있는 요소data: 탐색할 리스트data에 target 값이 있는 경우 함수는 target 값이 위치한 인덱스를 리턴합니다.data에 target 값이 없는 경우 None을 리턴합니다. 실습 해설이진 탐색은 요소를 찾을 때까지 반복해서 범위를 반으로 줄이면서 원하는 값을 찾는 알고리즘입니다.이때 범위를 나누는 기준은 찾는 값과 가운데 있는 값을 비교했을 때 작냐 크냐인데요.만약 찾는 값이 더 작다면 탐색 범위를 왼쪽 절반으로 줄이고, 더 크다면 탐색 범위를 오른쪽 절반으로 줄입니다.만약 같은 값이라면 가운데 있는 그 값이 우리가 찾는 요소이죠. 검색 범위 정의하기이진 탐색에.. 2024. 8. 15.
[문제] 선형 탐색 구현하기 문제반복문을 사용해 선형 탐색 함수를 구현해 보세요.linear_search() 함수는 두 개의 파라미터를 받습니다.target: 찾고 있는 요소 data: 탐색할 리스트 data에 target 값이 있는 경우 함수는 target 값이 위치한 인덱스를 리턴합니다.data에 target 값이 없는 경우 None을 리턴합니다. 실습해설선형 탐색은 리스트의 요소들을 앞에서부터 차례대로 비교하면서 찾는 값이 있는지 확인하는 알고리즘입니다.data 반복하기아래처럼 for문을 사용하면 data의 요소를 차례로 가져올 수 있는데요.for element in data:  여기서 주의해야 할 점은 linear_search() 함수에선 요소 자체가 아니라 요소가 위치한 인덱스를 리턴해야 한다는 겁니다. 요소 자체를 리턴하.. 2024. 8. 15.
이진 탐색(Binary Search)이란 무엇인가요? 이진 탐색은 정렬된 리스트나 배열에서 특정 값을 찾는 알고리즘입니다.이 알고리즘은 데이터의 중간 값을 기준으로 탐색 범위를 절반씩 줄여가면서 원하는 값을 찾습니다.이 방법을 통해 검색 효율을 크게 개선할 수 있습니다.이진 탐색의 기본 원리이진 탐색은 다음과 같은 단계를 따릅니다:리스트의 중간 값 찾기: 리스트의 중앙에 위치한 값을 확인합니다.값 비교: 검색하고자 하는 값이 중앙 값과 일치하는지 확인합니다.값이 일치하면: 검색을 종료하고 해당 위치를 반환합니다.값이 중앙 값보다 작으면: 리스트의 왼쪽 절반에서 다시 탐색합니다.값이 중앙 값보다 크면: 리스트의 오른쪽 절반에서 다시 탐색합니다.범위 축소: 위의 과정을 반복하며 탐색 범위를 절반으로 줄여갑니다.탐색 종료 조건: 리스트 범위가 없어지면(즉, 왼쪽.. 2024. 8. 15.
선형 탐색(Linear Search)이란 무엇인가요? 선형 탐색(Linear Search)은 가장 간단하고 직관적인 검색 알고리즘입니다.이 알고리즘은 리스트나 배열에 포함된 항목들을 순차적으로 하나씩 비교하여 원하는 값을 찾습니다.만약 리스트의 끝까지 가더라도 원하는 값을 찾지 못하면, 그 값은 리스트에 존재하지 않는 것으로 간주됩니다.선형 탐색의 기본 원리선형 탐색은 다음과 같은 단계를 따릅니다리스트의 첫 번째 항목부터 시작: 검색하고자 하는 값이 리스트의 첫 번째 항목과 일치하는지 확인합니다.항목 비교: 현재 항목이 검색하고자 하는 값과 일치하는지 확인합니다.일치 여부 판단: 값이 일치하면 검색을 종료하고 해당 위치를 반환합니다. 값이 일치하지 않으면 다음 항목으로 넘어갑니다.리스트 끝까지 반복: 리스트의 끝까지 반복하여 검색하고자 하는 값을 찾지 못하.. 2024. 8. 15.
Dart 100제 41 ~ 45 (알고리즘) 41. 정렬 알고리즘 구현하기: 버블 정렬버블 정렬(Bubble Sort)은 인접한 두 요소를 비교하고, 정렬이 완료될 때까지 반복하여 정렬하는 간단한 정렬 알고리즘입니다.문제버블 정렬 알고리즘을 구현하고 테스트하세요.코드// 버블 정렬 구현List bubbleSort(List arr) { int n = arr.length; for (int i = 0; i arr[j + 1]) { // 스왑 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr;}void main() { List data = [64, 34, 25, 12, 22, 11, 90]; p.. 2024. 8. 7.
반응형