투포인터(Two Pointer) 알고리즘 총 정리 - 개념, 원리, 시간복잡도, 활용, 장단점, 주의점, C언어, Java, Python 예시코드
1. 투포인터 알고리즘이란?투포인터(Two Pointer) 알고리즘은 배열이나 리스트와 같은 선형 자료구조에서 두 개의 포인터를 사용하여 탐색 범위를 조절하며 문제를 해결하는 기법입니다. 주로 정렬된 배열에서 특정 조건을 만족하는 부분을 찾거나, 구간 합을 구하는 등의 문제에서 효과적으로 사용됩니다. 2. 투포인터 알고리즘의 동작 원리투포인터 알고리즘은 두 개의 포인터를 적절히 이동시키며 문제를 해결하는 방식입니다. 다음과 같은 원리로 동작합니다.예제: 정렬된 배열에서 특정 합을 갖는 두 수 찾기예를 들어, 정렬된 배열 [1, 3, 5, 7, 10, 15]에서 합이 12가 되는 두 수를 찾는 문제를 생각해 봅시다.초기 설정left 포인터를 배열의 첫 번째 요소(0번째 인덱스)에 위치시킵니다.right ..
2025. 2. 7.
[C언어] 지역변수(Local Variable), 전역변수(Global Variable), 정적변수(Static Variable) 총 정리 - 개념, 특징, 예시코드, 차이점
C언어를 학습하다 보면 변수(variable)의 종류에 대해 헷갈리는 경우가 많습니다. 특히 지역변수(Local Variable), 전역변수(Global Variable), 정적변수(Static Variable)는 각각 다른 특성을 가지기 때문에 정확히 이해하는 것이 중요합니다. 이 글에서는 각 변수의 개념과 차이점을 상세히 설명하고, 예시 코드와 함께 한눈에 볼 수 있는 표로 정리해드리겠습니다. 1. 지역변수(Local Variable)개념지역변수는 특정 함수 또는 블록 내에서 선언되며, 해당 블록이 끝나면 소멸하는 변수입니다. 지역변수는 함수가 호출될 때 생성되고, 함수가 종료되면 메모리에서 사라집니다. 특징생성 시점: 함수가 호출될 때 생성소멸 시점: 함수가 종료될 때 소멸사용 범위: 변수가 선언..
2025. 1. 6.
쉘 정렬(Shell Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 주의점, 장단점
0. [사전 지식] 삽입 정렬쉘 정렬은 삽입 정렬을 개선한 정렬 알고리즘입니다. 삽입 정렬에 대해 먼저 살펴보시기를 추천드립니다. 삽입 정렬에 대해서는 아래 링크에 자세히 정리했습니다.2024.12.31 - [알고리즘] - 삽입 정렬(Insertion Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 주의점, 장단점 삽입 정렬(Insertion Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드,1. 삽입 정렬이란?삽입 정렬은 정렬되지 않은 데이터를 하나씩 가져와 이미 정렬된 부분에 적절한 위치에 삽입하는 방식으로 동작하는 정렬 알고리즘입니다. 간단한 구현과 적은 데이터에서는best-coding..
2025. 1. 3.
버킷 정렬(Bucket Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 장단점, 주의점
버킷 정렬은 데이터를 여러 개의 "버킷"으로 나누고 각 버킷에 저장된 데이터를 정렬한 뒤, 이를 합쳐 최종 정렬을 완성하는 분산 기반 정렬 알고리즘입니다. 데이터가 균등 분포되어 있을수록 높은 효율을 발휘하며, 비교 기반 정렬보다 더 빠를 수 있습니다. 1. 버킷이란?버킷에 대한 자세한 개념은 아래 글에 상세한 예시와 함께 작성했습니다. 버킷 자체만으로도 코딩 테스트에 자주 나오는 개념이라 꼭 숙지하는 것이 중요합니다.2024.12.20 - [알고리즘] - 버킷(Bucket) 알고리즘 - 코딩테스트에서 시간을 단축하는 비법(시간복잡도, C언어,Java,Python 예시코드) 버킷(Bucket) 알고리즘 - 코딩테스트에서 시간을 단축하는 비법(시간복잡도, C언어,Java,Python 예시코코딩테스트 문제..
2025. 1. 3.