본문 바로가기

Category

(50)
프로그램 개발 도구 프로그램 개발 도구 (C언어) - 컴파일: gcc, make - 디버깅: gdb - 라이브러리 유지: ar gcc: 컴퓨터가 이해할 수 있는 기계어 형태로 변환하는 작업을 하는 툴 전처리 단계 -> 컴파일 단계 -> 어셈블 단계 -> 링크 단계 1. 전처리 단계 cpp: 소스파일의 #include와 #define과 같은 전처리기 부분을 처리. 헤더를 삽입하고 실행 문장의 매크로를 상수로 반환 2. 컴파일 단계 - 어셈블리어로 된 파일을 생성 (파일이 생성되지만 보통 디스크에는 저장되지 않음) 3. 어셈블 단계 - 어셈블리어 파일을 기계가 이해할 수 있는 오브젝트 파일로 변환 4. 링크 단계 - 오브젝트 파일은 라이브러리 함수에 해당하는 코드가 없어서 실행할 수 없다. 또한 여러 파일로 이루어진 프로그램의..
8. 우선순위 큐 우선순위 큐: 우선순위를 가진 항목들을 저장하는 큐 - 일반 큐와 다른 점은 우선순위가 높은 데이터가 먼저 나감 구현 방법 1. 배열을 이용한 우선순위 큐 2. 연결 리스트를 활용한 우선순위 큐 3. 히프(heap)를 이용한 우선순위 큐 구현 별 시간 복잡도 표현 방법 삽입 삭제 순서 없는 배열 O(1) O(n) 순서 없는 연결 리스트 O(1) O(n) 정렬된 배열 O(n) O(1) 정렬된 연결 리스트 O(n) O(1) 히프 O(log n) O(log n) 히프: 노드의 키들이 다음 식을 만족하는 완전이진트리 - 최대 히프: 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진트리 // key(부모 노드) >= key(자식 노드) - 최소 히프: 부모 노드의 키 값이 자식 노드의 키 값보다..
7. 트리 트리: 계층적인 구조를 나타내는 자료구조 - 가족의 가계도, 회사의 조직도, 컴퓨터의 디렉터리 구조 등 - 트리는 부모-자식 관계의 노드들로 이루어짐 트리의 용어 - 노드: 트리의 구성요소 - 루트: 부모가 없는 노드 - 서브 트리: 하나의 노드와 그 노드들의 자손들로 이루어진 트리 - 단말 노드: 자식이 없는 노드 - 비단말 노드: 적어도 하나의 자식을 가지는 노드 - 자식, 부모, 형제, 조상, 자손 노드 - 레벨: 트리 각층의 번호 - 차수: 노드가 가지고 있는 자식 노드의 개수 이진트리 이진트리:모든 노드가 2개의 서브 트리를 가지고 있는 트리 - 서브 트리는 공집합일 수 있음. - 최대 2개까지의 자식 노드가 존재 - 모든 노드의 차수가 2 이하가 됨 - 서브 트리 간의 순서가 존재 이진트리의 ..
HTML, CSS 간단 요약 인터넷 vs 웹 인터넷: 디지털 기기들이 서로 연결된 국제 정보 통신망 웹: 인터넷을 활용한 서비스. 인터넷과 웹의 시작 - 1969년 현 인터넷의 시초인 아파넷이 개발됨, - 우리나라는 1982년 인터넷을 처음 만듦, - 팀 버너스 리: 1991년 최초로 앱을 개발. 1994년에 W3C 창설, - 2014년 HTML5으로 표준 변경 웹 동작 - 웹: 요청과 응답 과정으로 구분됨, - URL: 웹에서 어떤 대상을 구분하는 주소 - 서버: 응답하는 쪽 (웹 제공자) 클라이언트: 요청하는 쪽 (사용자) 웹 표준 기술 - HTML5 외 CSS3와 자바스크립트를 모두 포함. - CSS: HTML 페이지에 스타일을 지정하는 스타일시트를 작성할 때 사용하는 언어 - 자바스크립트: HTML 페이지에서 사용자 반응 등..
사용자 관리 01. 사용자 계정 관련 파일 사용자 관리 - 사용자가 시스템에 접근할 수 있는 유일한 방법 - 시스템 관리자 입장에서도 사용자의 접근 권한을 통제할 수 있는 중요한 수단 /etc/passwd 파일 - 사용자 계정 정보가 저장된 기본 파일 /etc/passwd 파일의 구조 - 쌍점(:)으로 구분되는 일곱 개의 항목으로 구성 1. 로그인 ID: 사용자 계정의 이름 2. x: 사용자 암호를 저장하던 항목으로 요즘은 /etc/shadow 파일에 별도로 보관 3. UID: 사용자 ID 번호 (로그인 ID가 다르더라도 UID가 같으면 같은 사용자로 판단) 4. GID: 그룹 ID, 시스템에 등록된 그룹에 대한 정보는 /etc/group 파일에 저장 5. 설명: 사용자에 대한 일반적인 정보가 기록 6. 홈 디렉터리..
쉘 스크립트 프로그래밍 (2) Test 명령어 - 문자열 비교나 파일 특성 검사에 사용 - 정수 비교에도 사용 가능 하지만 (( )) 표현이 더 편리함. 1. test expression - test 명령어에 의해 expression 검사 - 성공시 종료 코드0, 실패시 종료 코드1 2. [ expression ] - test와 거의 동일, 명령어이므로 [ 다음에 공백이 있어야 함 3. [[ expression ]] - Bash 내장 명령, 특수 문자 대치 없음, [[ 다음에 공백이 있어야 함 - 확장된 기능: &&, ||,괄호 사용 조건 표현 방법 (if, while, until) 1. 임의의 명령 - 성공적인 실행이면 true, 아니면 false 2. Test 명령 표현 방법 (숫자/파일/문자열 검사) 3. (( )) 표현 방법 ..
쉘 스크립트 프로그래밍 (1) 스크립트 프로그램의 실행 - 텍스트 파일로 작성 - 운영체제가 전용 인터프리터 프로세스를 실행 - 인터프리터 프로세스가 파일을 한 줄씩 읽어서 표현된 대로 실행 인터프리터의 실행 1. 인터프리터 직접 실행 2. 대상 프로그램을 명령어처럼 사용 - 대상 프로그램에 실행 가능 모드 추가 ex) chmod +x 파일 - 인터프리터 종류는 프로그램 속의 첫 줄에 지정 ex) #! /bin/bash - OS 커널에서 대상 파일을 읽는데 텍스트 파일이면 첫 줄에 지정된 인터프리터를 메모리에 적재, 실행하면서 지정된 프로그램 파일명을 인수로 전달 쉘 스크립트 작성 및 실행 1. vi 편집기로 쉘 스크립트 파일 작성 2-1. Bash로 실행 - Bash로 실행할 때에는 실행가능 모드 여부와 상관없음 ex) bash h..
6-5. 연결리스트(스택, 큐) 1. 연결리스트로 구현한 스택 2. 연결 리스트로 구현한 큐 자료 출처: 천인국 외 1명, C언어로 쉽게 풀어쓴 자료구조, 생능출판(2019)