알고리즘 4

[알고리즘]투 포인터(Two Pointer) 알고리즘 - 백준 2018(수들의 합 5)

투 포인터 알고리즘은 배열을 탐색할 때 두 개의 포인터를 사용하여 효율적으로 문제를 해결하는 알고리즘 기법이다.주로 정렬된 배열에서 특정 조건을 만족하는 구간이나 수의 쌍을 찾을 때 사용된다.기존의 이중 반복문 방식보다 더 빠르게 결과를 도출할 수 있어 자주 활용된다.✅ 투 포인터의 대표적인 두 가지 방식1. 같은 방향에서 출발하는 투 포인터두 포인터를 배열의 앞쪽에 나란히 배치한 후, 조건에 따라 포인터를 전진시킨다.일반적으로 연속된 구간의 합을 구하는 문제나 특정 조건을 만족하는 부분 수열을 찾는 문제에서 사용된다.특징start, end 포인터를 모두 0번 인덱스에 위치시킨다.end를 이동시킨다.현재 구간의 합을 기준으로 조건을 판단하고, 다음과 같이 포인터를 조정한다.조건 처리 방식sum end++..

코테 2025.04.15

Big-O 표기법

🧮 Big-O 표기법이란?Big-O 표기법은 알고리즘의 시간 또는 공간 복잡도를 수학적으로 분석하기 위해 사용하는 표기법이다. 주로 입력 크기 n이 매우 커질 때, 알고리즘의 실행 시간이 어떻게 증가하는지를 설명한다.✅ 핵심 개념입력 크기 n이 커질수록 알고리즘의 실행 시간이 어떻게 증가하는지를 나타냄실제 수행 시간보다 성장률(growth rate) 에 집중정확한 연산 횟수 대신, 가장 빠르게 증가하는 항만 남기고, 상수는 무시📌 Big-O 계산 예시예시 1: n(n-1)/2T(n) = n(n-1)/2 = (n^2 - n)/2가장 높은 차수인 n^2만 남기고, 상수와 낮은 차수는 무시⇒ O(n²)예시 2: 3n + 100상수 제거 → 3n상수 계수 제거 → n⇒ O(n)💡 왜 사용하는가?서로 다른 ..

[정렬] Selection Sort(선택 정렬)

📌 선택 정렬(Selection Sort)란?선택 정렬은 정렬 알고리즘 중 하나로, 매번 가장 작은 값을 선택하여 앞쪽에 위치시키는 방식으로 동작한다. 간단하고 직관적인 알고리즘이기 때문에 정렬 알고리즘을 처음 접할 때 많이 사용된다.🧠 동작 원리주어진 배열에서 현재 위치 이후의 값들 중 가장 작은 값을 찾아서 현재 위치의 값과 교환한다.이 과정을 배열 끝까지 반복하면 정렬이 완료된다.예시초기 배열: [5, 3, 4, 1, 2]1회차 → 가장 작은 값 1과 맨 앞 5를 교환 → [1, 3, 4, 5, 2]2회차 → 가장 작은 값 2와 두 번째 값 3을 교환 → [1, 2, 4, 5, 3]...최종 결과: [1, 2, 3, 4, 5]💻 선택 정렬 구현 (Java)import java.util.Arra..

[정렬] Bubble Sort(버블 정렬)

📌 버블 정렬이란?버블 정렬은 인접한 두 원소를 비교하여 큰 값을 뒤로 보내는 방식의 정렬 알고리즘이다.마치 물속의 거품이 떠오르듯이, 가장 큰 값이 반복적으로 뒤로 밀려나는 모습에서 버블(Bubble) 정렬이라는 이름이 붙었다.🧠 동작 원리한 번 순회를 돌 때마다 가장 큰 값이 오른쪽 끝으로 이동한다.매 반복마다 비교 횟수가 하나씩 줄어든다 (n-1, n-2, ..., 1)정렬이 완료된 원소는 다시 비교하지 않는다.예시int[] arr = {7, 9, 10, 8, 6};BubbleSort.sort(arr, arr.length);System.out.println(Arrays.toString(arr)); // [6, 7, 8, 9, 10]💻 기본 구현public class BubbleSort { ..