선택 정렬(Selection Sort)은 간단한 정렬 알고리즘 중 하나로, 주어진 리스트에서 매번 가장 작은(혹은 가장 큰) 요소를 찾아 그것을 리스트의 맨 앞(혹은 맨 뒤)으로 옮기는 작업을 반복하는 방식입니다. 시간 복잡도는 O(n2)로, 정렬해야 할 항목이 많을 경우 비효율적이지만, 구현이 매우 간단합니다.선택 정렬의 동작 과정입니다.주어진 리스트에서 가장 작은 값을 찾아 첫 번째 위치에 있는 값과 교환합니다.두 번째 위치부터 끝까지 중에서 다시 가장 작은 값을 찾아 두 번째 위치에 있는 값과 교환합니다.이를 마지막 요소까지 반복합니다.public class SelectionSort { public static void selectionSort(int[] arr) { int n =..
동시성 제어(Concurrency Control)여러 프로세스나 스레드가 동시에 동일한 자원에 접근할 때 발생할 수 있는 충돌이나 데이터 일관성 문제를 방지하기 위한 기법이다. 다수의 스레드가 한 자원(변수, 데이터베이스, 파일 등)에 동시 접근하면 예상치 못한 결과가 발생할 수 있다.스프링에서 동시성 제어 방법ReentrantLock은 자바의 Lock 인터페이스를 구현한 클래스 중 하나로 동시성 제어할 수 있는 도구이다.주요 특징1. 재진입 가능( Reentrant)동일한 스레드가 여러 번 연속해서 lock을 획득할 수 있는 기능을 제공한다. 예를 들어, 한 스레드가 이미 lock를 가지고 있을 때, 스레드가 같은 lock을 다시 요청해도 블로킹되지 않고 바로 접근할 수 있다.2. 공정성 설정 가능 (..
아래 내용은 망나니개발자님의 블로그 내용을 공부하면서 정리한 내용입니다.https://mangkyu.tistory.com/143 [TDD] 단위 테스트(Unit Test) 작성의 필요성 (1/3)1. 단위 테스트 vs 통합 테스트 차이 [ 단위 테스트(Unit Test) ] 단위 테스트(Unit Test)는 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다. 여기서 모듈은 애플리케이션에mangkyu.tistory.com단위 테스트(Unit Test)하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이며, 모듈은 애플리케이션에서 작동하는 하나의 기능 또는 메서드로 이해할 수 있다. "어떤 기능이 실행되면 어떤 결과가 나온다" 정도로 테스트를 진행하다. 통합 테스트(In..
아래 내용은 망나니개발자님의 블로그 내용을 공부하며 작성한 정리글입니다.https://mangkyu.tistory.com/182 [TDD] 단위 테스트와 TDD(테스트 주도 개발) 프로그래밍 방법 소개 - (1/5)이번에는 여러 개발 서적들 및 실무 경험 그리고 시행 착오 등을 겪으면서 얻은 테스트 주도 개발 방법에 대해 소개해보고자 합니다. 이번 포스팅에서는 먼저 단위 테스트와 중요성 그리고 단위mangkyu.tistory.com단위 테스트(Unit Test)를 작성해야 하는 이유코드를 수정하거나 기능을 추가할 때 수시로 빠르게 검증할 수 있다.리팩토링 시에 안정성을 확보할 수 있다.개발 및 테스팅에 대한 시간과 비용을 절감할 수 있다.비용이 크다라는 말은 통합 테스트를 위해 캐시, 데이터베이스 등 외..
버블 정렬(Bubble Sort)은 매우 간단한 정렬 알고리즘 중 하나입니다.버블 정렬은 인접한 두 요소를 비교하여 잘못된 순서로 되어 있으면 그 둘을 교환하는 방식으로 동작합니다.이 과정이 배열이 정렬될 때까지 반복합니다. 장점과 단점장점: 구현이 매우 간단하고 코드가 직관적이다.단점: 평균 및 최악의 경우 시간 복잡도가 O(n²)으로, 큰 데이터 집합을 다룰 때 비효율적이다.public class BubbleSortExample { public static void bubbleSort(int[] arr) { int n = arr.length; boolean swapped; for (int i = 0; i arr[j + 1]) { ..
스택의 특징LIFO(Last In, First Out): 마지막에 들어온 데이터가 가장 먼저 나가는 구조입니다.깊이 우선 탐색(DFS), 백 트래킹에서 중요한 역할을 합니다.연산push(): 스택의 맨 위에 데이터를 추가합니다.pop(): 스택의 맨 위에 있는 데이터를 제거하고 반환합니다.peek(): 스택의 맨 위에 있는 데이터를 제거하지 않고 반환합니다.package StackAndQueue;import java.util.Stack;public class stack { public static void main(String[] args) { Stack stack = new Stack(); stack.push(1); stack.push(3); st..
배열의 특징1. 고정된 크기: 배열은 선언할 때 크기를 지정하며, 한번 크기를 지정하면 이후에 크기를 변경할 수 없다.2. 빠른 접근 속도: 배열은 인덱스를 통해 직접 값에 접근할 수 있어 접근 속도가 빠르다.3. 삽입과 삭제가 어렵다: 배열의 특정 위치에 값을 삽입하거나 삭제하려면 그 위치 이후의 모든 요소를 이동시켜야 한다.4. 메모리 사용 효율적: 배열은 연속된 메모리 공간을 사용하여 포인터와 같은 추가적인 메모리 사용이 없어 효율적이다. 배열 예제: 배열에서 값을 삽입하고, 삭제하는 과정에서 배열의 크기가 고정되어 있기 때문에 인덱스를 사용하여 값을 직접 수정하고 이동시켜야 합니다. public class ArrayExample { public static void main(String[] ..
- Total
- Today
- Yesterday
- find
- isalpha
- Method
- counter
- combinations
- Python
- Lambda
- operators
- for
- If
- index
- zip
- function
- bool
- permutations
- Upper
- isdigit
- Lower
- Built-in Functions
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |