제가 블로그에 쓴 자료구조와 알고리즘 글들을 모아 정리했습니다. 자료 구조 연결 리스트(linked list) - 단일 연결 리스트, Java 구현 스택(stack) - 단일 연결 리스트와 배열을 이용한 스택, Java 구현 큐(Queue) - 단일 연결 리스트를 이용한 Deque, Java 구현 알고리즘 시간 복잡도와 점근적 표기법 재귀 알고리즘의 시간 복잡도 계산 선택 정렬(Selection Sort) - C++, Java, Python 구현 삽입 정렬(Insertion Sort) - C++, Java, Python 구현 버블 정렬(Bubble Sort) - C++, Java, Python 구현 병합 정렬(Merge Sort) - C++, Java, Python 구현 퀵 정렬(Quick Sort) -..
알고리즘
이번 글에서는 잘 사용하면 복잡한 연산을 쉽고 빠르게 처리할 수 있는 비트 연산과 시프트 연산을 알아보고 Java로 실습해 보겠습니다. 비트 연산 `비트 연산(bitwise operation)`은 이진수에 대해 비트 단위로 적용되는 연산입니다. 비트 연산자에는 논리 연산에서 사용되는 논리합(OR), 논리곱(AND), 배타적 논리곱(XOR), 부정(NOT)이 있습니다. 많은 프로그래밍 언어에서 `비트 연산자`로 &(AND), |(OR), ^(XOR), ~(NOT)을 사용합니다. `비트 연산의 진리표`는 논리 연산의 진리표에서 True와 False를 1과 0으로 바꾸면 됩니다. 진리표는 아래와 같습니다. AND(&) OR(|) XOR(^) NOT(~) 1 & 1 1 1 | 1 1 1 ^ 1 0 ~1 0 1 ..