CS(6)
-
[자료구조] 스택과 큐(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 -
[Linux/Unix] 저수준 파일 입출력
저수준 파일 입출력 : 유닉스 커널의 시스템 호출을 사용하여 파일 입출력을 수행 장점) 시스템 호출을 이용하므로 파일에 좀 더 빠르게 접근 가능 바이트 단위로 파일의 내용을 다루므로, 일반 파일뿐만 아니라 특수 파일도 읽고 쓸 수 있다 단점) 바이트 단위로만 입출력을 수행하므로, 이를 이용해서 응용 프로그램을 작성하려면 바이트를 적당한 형태의 데이터로 변환하는 함수 등 여러 가지 추가적인 기능을 구현해야 한다 [파일 기술자] : 현재 열려 있는 파일을 구분할 목적으로 유닉스가 붙여놓은 번호 저수준 파일 입출력에서 열린 파일을 참조하는 데 사용하는 지시자 역할 정수값, open 함수를 사용해 파일을 열었을 때 부여된다 0 : 표준 입력 (보통 키보드) 1 : 표준 출력 (보통 모니터 화면) 2 : 표준 오..
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 -
[Linux/오류] gcc 빌드중에 /usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in ...
[TIP] gcc 빌드중에 /usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in ... 와 같은 오류를 만났을 때 - 프로그래밍 - AiRPAGE [TIP] gcc 빌드중에 /usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in ... 오픈소스로 내려받은 어떤 코드를 빌드하다가 하기와 같은 오류를 만났습니다. p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Andale Mono'; color: #2fff12; ..
2023.04.08