본문 바로가기

대학교시절

(14)
데이터 추상화 정리 8.1 기본 데이터 구조 ※ 배열 - 동질성 배열(homogeneous array) : 항목들이 모두 동일한 타입으로 이루어진 데이터 블록 - 이질성 배열(heterogeneous array) : 유형이 다를 수도 있는 데이터 항목들의 블록 - 구성요소(component) : 이 블록들의 항목 ※ 리스트(list) : 순차적으로 배열되어 있는 항목들의 집합 - 헤드(head) : 순차적으로 배열되어 있는 항목들의 집합 - 테일(tail) : 리스트의 다른 쪽 끝 - 스택(stack) : 헤드에서만 항목들을 제거하거나 삽입할 수 있는 리스트의 한 유형 - 상단(top) : 일상적 표현에 따라 스택의 헤드를 스택의 상단이라고 함 - 하단(bottom) : 스택의 테일 - LIFO(Last in, First ..
소프트웨어 공학 정리 7장 소프트웨어 공학 7.1 소프트웨어 공학 개관 ※소프트웨어 공학과 다른 공학 분야 사이의 차이점 1) 사전 제작된 범용 컴포넌트들을 이용하여 시스템을 구축하는 것고 관련이 있다. 일반 공학분야의 경우와 달리 소프트웨어공학에서는 과거에 설계된 소프트웨어 컴포넌트들의 내부 설계가 특정 응용 분야에 기초하고 있어 범용 컴포넌트로서의 유용성이 제한된다. 따라서 복잡한 소프트웨어 시스템들은 처음부터 새로 개발되어 온 것이 사실이다. 2) 소프트웨어의 경우 그 성질을 측정하기 위해 사용될 수 있는 측도(metric)라고 불리는 정략적 기법이 없다는 것이다. - CASE(Computer-Aided Software Engineering) : 소프트웨어 개발에 컴퓨터기술을 적용하는 기법 - CASE도구 : CASE의..
프로그래밍 언어 정리 프로그래밍언어 (출처 : 컴퓨터과학총론) 6.1 역사적 고찰 - 디버깅(debugging) : 프로그램이 완성되기 위해 오류들을 찾아 고치는 행위 - 식별자(identifier) : 데이터 항목에 이름을 부여하여 일시적으로 규정하거나, 그 데이터의 어떤 특성을 표시하기 위해서 사용하는 기호 - 어셈블러(assembler) : 기호 표현을 기계어 명령으로 변환해주는 프로그램 - 어셈블리 언어(assembly language) : 프로그램 표현에 사용되는 기호체계 - 단점 : 1) 기계 종속적-컴퓨터에 따라 고쳐야됨 2) 기계어의 단순한 단계들로 주어지는 틀에 맞추어 사고하도록 강요됨 - 기계독립적(machine independent) : 컴퓨터의 특성에 의존 - 번역기(translator) : 기계어프로그..
알고리즘 과제 #4 (그래프 최소 경로 구하기) 문제 : 무선 센서 네트워크에서 감시 노드들의 집합 구하기 무선 센서 네트워크에서 센서들은 서로 교신하며 일을 해야 하므로 네트워크 공격에 취약한데 이러한 공격을 막기 위해 보통 사용하는 기법이 행위 기반 탐지이다. 특별한 감시 노드들이 이웃 노드들이 합법적인지를 알기 위해 이웃의 교신을 감청하고, 공격이 탐지되면 경고 메시지를 감시 노드들만으로 이루어진 경로를 따라 관리를 담당하는 싱크 노드로 전달하게 된다. 무선 센서 네트워크는 그래프 G = (V, E)로 표현할 수 있는 데, 여기서 V는 센서 노드들의 집합이고 E는 통신 링크들의 집합이다. 임의의 노드 u에 대해 A(u)를 u와 인접한 노드들의 집합이라 한다. X를 노드들의 집합이라 할 때 X와 인접한 노드들의 집합 A(X) = A(u)이다. 싱크..
알고리즘 과제 #3 (정렬 및 속도 비교) 문제 : 정렬 알고리즘의 실행시간 비교 1. Exchange sort, Merge Sort와 Quick Sort 알고리즘들을 구현하고, key를 비교한 횟수, key가 move된 횟수, 실행시간을 측정하여 비교한다. (clock 함수 사용) 2. 원소 개수가 다른 3가지 정렬된 데이터(S[i] = i, 1≤ i ≤n)를 생성하여 Exchange sort와 Quick Sort를 비교한다. 단, n은 실행시간이 충분한 유효 숫자를 가질 수 있도록 각자 정한다. 3. 원소 개수가 다른 3가지 임의의 데이터를 생성하여 Merge Sort와 Quick Sort를 비교한다. 각 경우에 대해 (원소 개수가 같은) 5개의 데이터를 생성하여 평균값을 구한다. 데이터는 프로그램 안에서 생성한다. 4. 측정된 실행시간과 이..
알고리즘 과제 #2 (인접한 노드 그래프 생성) 문제 : 센서 네트워크 생성 무선 센서 네트워크는 물리적이나 환경적인 상태 즉 온도, 소리, 진동, 압력, 움직임, 또는 오염 정도를 관찰하기위해 공간적으로 분포되어 있는 독립적인 기능을 수행하는 센서들로 이루어져 있다. 무선 센서 네트워크는 그래프 G = (V, E)로 표현할 수 있는 데, 여기서 V는 센서 노드들의 집합이고 E는 통신 링크들의 집합이다. 두 개의 센서 노드는 전송 범위 안에 있으면 서로 교신을 할 수 있는데 이 경우에 두 노드를 간선으로 연결한다. m x m 정방형 필드에 n개의 센서 노드를 임의로 배치하고, 두 센서 노드의 거리가 t보다 작거나 같으면 간선으로 연결된 그래프의 인접행렬을 출력하는 프로그램을 작성하라. 입력 형식 입력 파일의 이름은 input.txt이다. 첫째 줄에는 ..
알고리즘 과제 #1 (이진 트리 높이 구하기) 문제 :이진트리의 높이 구하기 이진트리의 높이를 구하는 알고리즘을 작성하시오 위의 예에서 이진트리의 높이는 6이다 입력 형식 입력 파일의 이름은 input.txt이다. 여러 개의 테스트 데이터가 입력될 수 있다. 첫째 줄에는 테스트 데이터의 개수가 입력된다. 둘째 줄에는 첫 번째 데이터의 노드의 개수를 나타내는 정수 이 주어진다. 다음 개의 줄에는 각 줄마다 노드 번호와 해당 노드의 왼쪽 자식 노드와 오른쪽 자식 노드의 번호가 순서대로 주어진다. 노드들의 번호는 1부터 까지로 주어진다. 자식이 없는 경우에는 자식 노드의 번호가 -1로 주어진다. 루트 노드의 번호는 1이다. 그 다음 줄부터 나머지 데이터가 같은 방식으로 주어진다. 출력 형식 데이터마다 한줄 씩 이진트리의 높이를 순서대로 출력한다. 입력 예..
운영체제 과제 #3 (mmap() 시스템콜 성능) 목표 : 표준 파일 I/O의 성능과 memory-mapped I/O의 성능을 비교한다. memory-mapped I/O: 파일의 내용을 메모리에 사상하는 mmap()시스템 콜을 사용 표준 파일 I/O: read() 시스템 콜을 사용하여 비교한다. 방법 : 성능 비교를 하기 위해 파일 이름을 command line argument를 사용한다. 파일에서 출력 가능한 문자들과 공백 문자들의 수를 계산한다. 이를 위해 두 가지 함수 isprint()와 isspace()를 사용한다. 만약 해당 파일을 찾을 수 없을 때에는 에러메시지를 출력하고 종료한다. #include #include #include #include #include #include #include #include #include #include ..