목록전체 글 (190)
Cohe

2-1 프로세스를 정의하지 않고 즉흥적인 개발을 할 경우의 발생하는 문제점이 아닌 것은? ③ 시스템을 구현하기 전에 요구를 알아본다든지 설계하는 작업의 중요성을 깨닫지 못하게 된다. 소프트웨어는 신중하게 잘 설계하지 않으면 그 구조가 나빠진다 장황한 문서가 없지만 시행착오를 덜 겪게 된다. 체계적인 테스트 작업이나 품질 보증 차원의 활동에 대한 필요성의 인식이 없다 2-2 다음은 프로세스와 관련된 용어를 설명한 것이다 옳지 않은 것은? ③ 프로세스 명세 - 프로젝트에서 수행하여야 하는 작업과 이들의 수행 순서를 정의한 것 프로세스 모델 - 일반적인 프로세스를 기술한 것 실행 프로세스 - 작업을 실행하였을 때 나오는 결과 프로세스 - 프로세스 명세와 실행 프로세스 두 가지 개념을 편의 상 부르는 용어 2-..
워터폴vs 애자일 워터폴 폭포수 모델은 순차적인 소프트웨어 개발 프로세스(소프트웨어를 만들기 위한 프로세스)로 개발의 흐름이 마치 폭포수처럼 지속적으로 아래로 향하는 것처럼 보이는 데서 이름이 붙여졌다. 워터폴이란? 요구사항 수집과 분석 프로젝트에 사용될 기능적, 시스템적 또는 기술적 사양 정보를 클라이언트와 주요 이해관계자로부터 수집한다. 설계 사용자 경험 전문가는 고객 제품팀 및 기타 주요 이해관계자와 함께 제품의 모양새와 여타 요소들을 결정한다. 구현 테스트 성능, 시스템 및 사용자 승인 테스팅을 수행하여 제품이 요구사항을 충족하는지 확인한다. 만약 결함이나 버그가 발견되면 제품이 전달되기 전에 해결된다. 프로젝트 최종 결과물 전달 프로젝트를 착수할 때 확정했던 사양을 제품이 충족하면 클라이언트에게..
1-1 소프트웨어에 대한 올바른 상식은? 4 소프트웨어 프로젝트의 요구 사항은 지속적으로 변경되지만 소프트웨어는 유연하기 때문에 변경을 반영하는 것이 쉽다. 프로그램을 실제 작동해 보기 전까지는 소프트웨어의 품질을 평가하는 것은 불가능하다. 소프트웨어 공학은 별로 필요 없는 많은 문서를 생성하게 하여 개발을 지연시킨다. 지체된 프로젝트에 인력을 뒤늦게 투입하는 것은 오히려 프로젝트의 일정을 더욱 지연 시킬 수 있다. 프로그램을 실제 작동해 보기 전까지는 소프트웨어의 품질을 평가하는 것은 불가능하다.지체된 프로젝트에 인력을 뒤늦게 투입하는 것은 오히려 프로젝트의 일정을 더욱 지연 시킬 수 있다. → 지연 됨. 소프트웨어 공학은 별로 필요 없는 많은 문서를 생성하게 하여 개발을 지연시킨다. 소프트웨어 프로젝..
스패닝 트리 부속 그래프로 다음을 만족한다. connect가 필요하다 스패닝 트리 종류 깊이 우선 스패닝 트리 dfs 알고리즘을 사용하여 방문되어진 에지로 만들어진 스패닝 트리 너비 우선 스패닝 트리 bfs 알고리즘을 사용하여 방문 되어진 에지로 만들어진 스패닝 트리 최소 스패닝 트리 스패닝 트리에서 각 에지의 비용 값이 주어진다면 부여된 비용 값의 합을 최소로 하는 스패닝 트리를 구할 필요가 있다 가중치 그래프를 생각해야 한다 코드 while(T contains less than n—l edges && E is not empty) choose a least cost edge (v,w) from E; delete (v,w) from E; if((v,w) does not create a cycle in T..

그래프 개념 오래된 그래프 문제로 다음과 koenigsberg 다리 문제가 있다. 임의의 한곳(A,B,C,D)에서 출발하여 a부터 f까지 “모든 다리를 한 번씩 건널 수 있는가? 하는 문제이다. 정의 그래프의 수학적 정의 그래프 : G(V,E)이고 V,E는 다음과 같다. V(G): 정점 E(G) : 간선, 정점을 연결하는 선, VXV의 부분집합 우방향 그래프 : 예를 들면 쌍방 통행이 가능한 도로의 지도이다. 정점을 연결하는 선에 방향이 없다 방향 그래프 : 예를 들면 일방 통행만 있는 도로의 지도이다 정점을 연결하는 선에 방향이 있다. 그래프의 예와 수학적인 표현 : 그래프를 표현하는 방법은 여러 가지이다. 아래 방법은 그림으로 그리는 그래프의 모습과 수학적인 기로호 표현하는 방법이다. 그래프에서의 제..
선형검색 선형 검색이란? 선형검색은 주어진 데이터에서 키 값에 의하여 데이터를 찾는 과정이다. 검색 방법 중 가장 단순하다. 선형검색 알고리즘 int sequential_search(int keys[], int find_key, int n) { int i=0; while(i searchnum ) right = middle - 1; else if ( list[middle]==searchnum ) return middle; } return —1 ; } 이진탐색 알고리즘-순환 int binsearch(int list[], int searchnum, int left, int right) {int middle; if(left5개->2개->1개 이므로 최악의 경우 4번 비교하게 된다. 11개의 데이터 데이터가 10..
버블 정렬 버블정렬 : 버블 정렬은 정렬이 진행되는 모양이 비누거품과 같다고 하여 붙여진 이름이다. 나란히 있는 두개의 데이터를 계속하여 바꾸어 나간다. 전체 비교 횟수 : T(n)=n(n-1)/2 시간 복잡도 : O(n²) 알고리즘 list에 대한 기본 버블정렬 알고리즘 void bubble_sort(element list[], int n){ int i, j; element next; for (i=n-1;i>0;i--){ for(j=0;jlist[j+1]{ swap(list[j],list[j+1]}}}} 개선된 버블정렬 버블정렬 각 단계에서 데이터의 이동이 일어나지 않으면 다음 단계로 진행할 필요가 없다. 즉 중간과정에서 정렬이 끝나면 더 이상 비교와 교환이 필요없다. void bubble_sort(e..
이진트리 탐색 알고리즘 트리의 탐색은 트리의 각 노드를 방문하는 작업을 말한다. 👉 다음과 같은 방법들을 생각해 볼 수 있다. 레벨 순 : 레벨이 낮은 순으로 방문 왼쪽 트리 L→ A → 오른쪽 트리 R (중위 탐색) A→왼쪽 트리 L → 오른쪽 트리 R (전위 탐색) 왼쪽 트리 L → 오른쪽 트리 R → A (후위 탐색) 중위 탐색(inorder traversal) 왼쪽 트리 → 루트 노드 → 오른쪽 트리 순으로 방문 주의점 : 왼쪽 트리를 방문할 때 왼쪽 트리 자체가 트리이기 때문에 왼쪽 트리 안에서도 다시 중위 탐색을 한다. 왼쪽 트리로 간 다음 왼쪽 트리의 왼쪽 트리, 왼쪽 트리의 루트노드, 왼쪽 트리의 오른쪽 트리 순이 된다. 예시 1 중위 탐색을 하면 왼쪽 트리(B D E H 0, 루트(A),..
검색 시간복잡도 조작 시 시간복잡도 (insert, delete, update) 배열 O(logN) 정렬이 되어 있다고 가정 O(log N) + O(n) insert 시 위치 찾기 후 데이터 재정렬 연결리스트 O(n) 정렬 여부에 상관 없음 O(n)/O(1)+ O(1) tree O(logn) O(logn)+ O(1) 연결리스트의 삽입 삭제 시 데이터를 이동하지 않는 장점을 살리면서 연결리스트의 검색 시 노드의 처음부터 찾아가야하는 단점을 보완 데이터를 중간부터 찾아가는 이진검색의 장점 이용! 연결리스트의 포인터를 리스트의 중간에 두는 방법을 선택 이진 트리는 연결 리스트의 link 노드를 앞 뒤로 배치한다. ⇒ 검색을 중간부터 시작하여 좌우 중 하나로 분기, 0.5씩 검색 대산을 줄여나감으로써 이진검색의..
연결리스트 처음과 마지막 노드 삽입/삭제 연결리스트의 처음과 마지막에 노드를 삽입 삭제 할 경우 노드 수 n과 노드를 삭제하려면 앞 노드의 주소를 알아야한다 시간 복잡도 → O(n) 원형 연결 리스트 정의 연결리스트의 맨 끝 노드를 첫 번째 노드와 연결시켜서 원형으로 만든 리스트 단순 연결리스트의 마지막 노드를 끝 노드와 연결 시켰다 예시 리스트를 원형으로 만든 다음 리스트의 포인터가 마지막을 가리킨다. 그 후 리스트의 처음과 마지막에 노드를 삽입하는 경우를 살펴보자. 문제 void delete_first(list_ptr *ptr){ if ((*ptr)==NULL){ printf("원소 없음");} //빈리스트 else{ /* 원형리스트의 맨 앞 부분을 삭제하는 함수 */ //ptr의 링크 값을 바꿔야한..