CS(21)
-
[자료구조] 스택과 큐(Stack & Queue)
스택(Stack)과 큐(Queue)스택과 큐는 데이터를 저장하고 처리하는 기본적인 자료구조로, 각기 다른 데이터 처리 방식과 특징을 가진다.스택(Stack)스택이란?정의: 데이터를 후입선출(LIFO, Last In First Out) 방식으로 처리하는 자료구조구조:- 데이터를 넣는 작업: push- 데이터를 꺼내는 작업: pop- 가장 위의 데이터를 확인하는 작업: peek 또는 top스택의 특징후입선출(LIFO): 마지막에 삽입된 데이터가 가장 먼저 제거된다.한쪽 끝에서만 삽입과 삭제가 가능하다.스택의 활용 예시1. 괄호 검사: 수식의 괄호가 올바르게 닫혔는지 확인2. DFS(깊이 우선 탐색): 그래프 탐색 시 경로를 추적3. 백트래킹: 잘못된 경로를 되돌아갈 때4. 호출 스택(Call Stack): ..
2024.11.30 -
[자료구조] 재귀(Recursion)
재귀(Recursion)란?함수가 자기 자신을 호출하여 문제를 해결하는 기법이다. 일반적으로 재귀 함수는 두 가지 구성 요소를 가진다.기본 조건(Base Case): 재귀 호출을 종료시키는 조건재귀 조건(Recursive Case): 함수가 자기 자신을 호출하는 조건특징문제를 작은 단위로 나누어 해결한다.함수 호출 과정에서 스택 메모리를 사용한다.무한 재귀 호출이 발생하면 스택 오버플로우(Stack Overflow)가 발생할 수 있다.장단점장점- 코드가 간결하여 가독성이 높다.- 트리나 그래프 탐색과 같은 계층적 문제 해결에 적합하다.단점- 반복적으로 호출되므로 성능이 떨어질 수 있다.- 스택 메모리를 과도하게 사용할 경우 문제가 발생한다.재귀 함수의 구조void recursiveFunction(매개변수..
2024.11.29 -
[자료구조] 배열 & 연결리스트(Array & LinkedList)
배열과 연결 리스트배열과 연결 리스트는 데이터를 저장하고 관리하는 데 사용되는 기본적인 자료구조이다.배열(Array) 배열(Array)이란?배열이란 동일한 데이터 타입을 가진 원소들이 연속적으로 배치된 자료구조이다. 특징고정된 크기를 가지며, 크기 변경이 어렵다.인덱스를 사용하여 원소에 빠르게 접근할 수 있다. 이때, 원소에 대한 접근 속도는 O(1)이다.크기를 미리 정해야 하므로 필요한 크기보다 크게 잡아야 할 수 있다.(메모리 낭비 가능성)장단점장점- 인덱스를 이용한 빠른 접근 가능 (O(1))- 연속된 메모리 할당으로 캐시 적중률이 높음단점- 크기가 고정되어 있어 유연성이 부족함- 삽입/삭제 연산이 비효율적임 (O(n)) 시간 복잡도삽입: 특정 위치에 값을 삽입하는 경우, 기존 값들을 이동해야 하므..
2024.11.29 -
[OracleDB] mac m2 Oracle 설치
m2칩을 사용하는 mac에서는 아직 oracle db 설치를 공식적으로 지원하지 않는다. 따라서 colima와 docker를 통해 설치를 해보았다. 1. homebrew install 홈브루가 설치되어 있지 않다면 설치가 필요하다. 홈페이지에서 아래 명령어를 복사해서 터미널에 입력한다. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" (참고) 홈브루 홈페이지 링크 : https://brew.sh/ Homebrew The Missing Package Manager for macOS (or Linux). brew.sh 2. colima install & 실행 2-1 아래의 명령어를 이용..
2024.03.25 -
[Linux/Unix] 저수준 파일 입출력
저수준 파일 입출력: 유닉스 커널의 시스템 호출을 사용하여 파일 입출력을 수행 장점) 시스템 호출을 이용하므로 파일에 좀 더 빠르게 접근 가능 바이트 단위로 파일의 내용을 다루므로, 일반 파일뿐만 아니라 특수 파일도 읽고 쓸 수 있다 단점) 바이트 단위로만 입출력을 수행하므로, 이를 이용해서 응용 프로그램을 작성하려면 바이트를 적당한 형태의 데이터로 변환하는 함수 등 여러 가지 추가적인 기능을 구현해야 한다 [파일 기술자]: 현재 열려 있는 파일을 구분할 목적으로 유닉스가 붙여놓은 번호 저수준 파일 입출력에서 열린 파일을 참조하는 데 사용하는 지시자 역할 정수값, open 함수를 사용해 파일을 열었을 때 부여된다 0 : 표준 입력 (보통 키보드)1 : 표..
2023.04.08 -
[Linux/Unix] 명령행 인자
명령행: 유닉스 시스템에서 사용자가 명령을 입력하는 행을 람ㄹ하낟 프롬프트가 뜨고 커서가 사용자 입력을 기다리고 있는 행 명령행 인자: 사용자가 명령행에서 명령을 실행할 때 해당 명령(실행 파일명)과 함께 지정하는 인자 명령의 옵션 / 옵션의 인자 / 명령의 인자 ex1) ls -l에서 '-l'을 명령행 인자 ex2) ls /tmp에서 '/tmp'를 명령행 인자 명령행 인자의 전달명령행 인자는 자동으로 프로그램의 main 함수에 전달된다.보통 main 함수는 다음과 같이 정의한다.int main(void) { ... }그러나 main 함수에서 명령행 인자를 전달받으려면 다음과 같이 정의해야 한다.int main(int argc, char *argv[]) { ... }첫 번째 인자인 argc는 명령..
2023.04.08