반응형
반응형
선택 정렬(Selection Sort)이란?선택 정렬은 배열을 정렬하는 가장 기본적인 알고리즘 중 하나로, 다음과 같은 방식으로 동작합니다:배열에서 가장 작은 요소를 찾아 첫 번째 위치로 이동합니다.그다음, 두 번째 요소부터 남은 요소 중 가장 작은 값을 찾아 두 번째 위치로 이동합니다.이 과정을 반복하여 배열 전체를 정렬합니다.🔹 시간 복잡도최선, 평균, 최악의 경우 모두 O(n²)이유: 각 요소를 확인하며 남은 요소에서 최솟값을 찾기 때문 const selectionSort = (arr) => { const len = arr.length; for (let i = 0; i 첫 번째 반복문 (i)배열을 한 요소씩 순회하면서 정렬할 위치를 결정합니다.minIndex를 현재 i로 설정합니다. (..
버블 정렬(Bubble Sort)란?버블 정렬은 서로 인접한 두 개의 값을 비교하면서 정렬하는 방식으로, 작은 값을 왼쪽으로, 큰 값을 오른쪽으로 이동시킵니다.마치 거품(Bubble)이 물 위로 올라가는 것처럼 가장 큰 값이 반복적으로 오른쪽 끝으로 이동하므로 **버블 정렬(Bubble Sort)**이라고 불립니다.정렬 동작 과정예제 배열:[5, 3, 6, 4, 1]1회전(첫 번째 바깥 루프)각 숫자를 비교하여 큰 값을 오른쪽으로 이동[5, 3, 6, 4, 1] → [3, 5, 6, 4, 1] (5와 3 교환)[3, 5, 6, 4, 1] → [3, 5, 6, 4, 1] (5와 6 그대로 둠)[3, 5, 6, 4, 1] → [3, 5, 4, 6, 1] (6과 4 교환)[3, 5, 4, 6, 1] → ..
약수를 구하는 알고리즘에는 몇 가지 방법중 가장 일반적이고 효율적인 방법기본적인 방법:1부터 해당 숫자까지 모든 수로 나누어 보는 방법입니다.시간 복잡도: O(n)제곱근을 이용한 최적화 방법:숫자의 제곱근까지만 검사하는 방법입니다.시간 복잡도: O(√n)제곱근을 이용한 최적화 방법의 알고리즘은 다음과 같습니다:주어진 수 n의 제곱근까지 반복합니다.i가 n의 약수라면, i와 n/i 모두 약수입니다.i와 n/i가 같지 않은 경우에만 두 수를 모두 약수 목록에 추가합니다.예를들어 36의 약수를 구하면 const res=[1]; const divisor=n=>{ let i=2; for(i; ia-b));n = 36Math.sqrt(36) = 6, 따라서 i는 1부터 6까지 반복합니..
재귀함수를 꼬리 재귀 함수로 변환하고, 그 다음 반복문으로 변환하는 것은 재귀 호출을 명시적인 반복 구조로 바꾸는 과정입니다. 꼬리 재귀는 함수의 마지막 작업이 자기 자신을 호출하는 형태로, 이론적으로는 반복문으로 쉽게 변환할 수 있습니다.꼬리 재귀를 반복문으로 바꾸는 이유는 스택오버플로우 때문입니다.그렇게 때문에 꼬리재귀함수 와 반복문간의 코드 변환은 자유자재로 할수 있어야 합니다.재귀함수 문제 중에서 다른 문제로는 다음과 같은 것들이 있습니다.https://www.youtube.com/watch?v=h80tLv0fn88&list=PLBNdLLaRx_rKOFzA3txlG5rf9ZaVUuvmv&index=210분정도 후 부터 tail recursion 보시면 됩니다. 1. 피보나치 수열피보나치 수열은 각..
Trie(트라이)를 이용한 문자열 검색 아래 문자열 저장한뒤 to tea app 검색할 문자열로 검색 (to) JAVA Trie(트라이) 연습문제 import java.util.*; public class Main { public static void main(String[] args) { Trie head = new Trie(); head.insert("to"); head.insert("tea"); head.insert("tonight"); if(head.prefixSearch("to")) { System.out.println("ooo"); } else { System.out.println("xxx"); } } } class Trie { private TrieNode root; public Trie()..