재귀 (Recursion)
CS/알고리즘
거울 앞에 거울을 놓으면 무한히 반복되는 모습을 볼 수 있다. 이처럼 자기 자신을 참조하는 것을 재귀라고 한다. 프로그래밍에서 재귀는 함수가 자기 자신을 호출하는 것을 의미한다. 재귀 (Recursion)재귀는 어떠한 것을 정의할 때 자기 자신을 참조하는 것을 뜻한다. 프로그래밍에서는 함수가 자기 자신을 호출하는 재귀 함수로 구현된다.재귀 함수의 필수 요소재귀 함수는 탈출 조건(기저 조건)이 없으면 무한히 자신을 호출하기 때문에, 결국 스택 메모리가 가득 차서 프로그램이 종료된다.(Stack Overflow). 따라서 재귀 함수에는 반드시 다음 두 가지가 필요하다. 설명기저 조건 (Base Case)재귀를 멈추는 조건재귀 호출 (Recursive Call)자기 자신을 호출하는 부분 간단한 재귀 함수 예시..
셋 (Set)
CS/자료구조
배열 [1, 2, 3, 2, 4, 1, 5]에서 중복을 제거하고 싶다고 생각해보자.일일이 확인하며 중복을 찾는 것보다, 중복을 자동으로 허용하지 않는 자료구조가 있다면 훨씬 편리할 것이다.이것이 바로 셋(Set)의 핵심 개념이다. SetSet은 데이터의 중복을 허용하지 않는 자료구조이다. 내부적으로는 일반적으로 해시 테이블을 기반으로 구현되며, 각 요소는 key만 존재하고 value가 없는 형태로 저장된다.이 때문에 **해시 셋(HashSet)**이라고도 부르며, 요소 자체가 key의 역할을 수행한다.Set vs Hash Table Hash TableSet저장 형태key-value 쌍key만 (value 없음)중복 허용key 중복 불가요소 중복 불가주 용도데이터 매핑중복 제거, 존재 여부 확인예시{ 1:..
해시 테이블 (Hash Table)
CS/자료구조
전화번호부에서 이름으로 전화번호를 찾는다고 생각해보자. 전화번호부가 정렬되지 않았다면 처음부터 끝까지 찾아야 하지만, 이름을 특정 규칙으로 변환해서 바로 위치를 찾을 수 있다면 훨씬 빠를 것이다. 이것이 바로 해시 테이블(Hash Table)의 핵심 개념이다. 해시 테이블해시 테이블은 해시 함수와 테이블(배열)이 합쳐진 자료구조이다.키(Key)를 해시 함수로 변환하여 인덱스를 얻고, 그 위치에 값(Value)을 저장한다. 이를 통해 데이터의 저장과 검색을 매우 빠르게 수행할 수 있다.해시 테이블의 핵심 개념 설명키 (Key)데이터를 식별하는 고유한 값 (예: 1, 21)값 (Value)실제로 저장할 데이터 (예: "이운재", "박지성")해시 함수키를 인덱스로 변환하는 함수 (예: key % 10)버킷 ..