본문 바로가기

Computer Science107

[Computer Algorithms] Combination (조합) N개 들어있는 배열에서 i개 고르는 경우를 모두 출력하는 알고리즘이다. mask를 이용해서 true인 자리에 있는 것을 출력한다.#include #include #include using namespace std;int main(){ int N = 5; vector arr = {1, 2, 3, 4, 5}; for (int i = 1; i mask(arr.size(), false); fill(mask.begin(), mask.begin() + i, true); // 앞의 i개를 true로 설정 do { for (int j = 0; j  10000의 이전 조합: 0100001000의 이전 조합: 0010000100의 이전 조합: 00.. 2025. 3. 30.
[Computer Algorithms] Bellman-Ford Algorithm (벨만-포드 알고리즘) 벨만-포드 알고리즘 (Bellman-Ford Algorithm)벨만-포드 알고리즘은 가중 그래프에서 최단 경로를 찾는 알고리즘이다. 다익스트라 알고리즘과 비슷하지만, 음수 가중치(edge weight)를 가진 그래프도 처리할 수 있다는 점이 큰 차이점이다. 알고리즘 개요그래프 유형: 가중치 그래프(음수 가중치 가능), 방향 그래프(Directed Graph)시간 복잡도: O(VE) (V: 정점 개수, E: 간선 개수)장점: 음수 가중치를 가진 그래프에서도 최단 경로 계산 가능단점: 다익스트라(O((V+E) log V))에 비해 느림추가 기능: 음수 사이클(Negative Cycle) 존재 여부도 확인 가능알고리즘 동작 과정모든 정점의 거리를 무한대(∞)로 초기화하고, 시작 정점은 0으로 설정.V - 1번.. 2025. 3. 5.
[Software Engineering] Configuration Management Introduction1. 개요소프트웨어 형상 관리(SCM, Software Configuration Management)는 소프트웨어 개발 및 유지보수 과정에서 변경을 효과적으로 관리하는 기술 및 절차의 집합이다. 이는 소프트웨어 제품이 개발 및 배포되는 동안 일관성과 품질을 유지하기 위해 필요한 관리 기법을 포함한다. 2. 소프트웨어 형상 관리(SCM) 개념정의: 소프트웨어 엔지니어링 프로세스 내에서 특정 기준선을 설정하고 변경 사항을 평가 및 통제하는 관리 기법. 3. CMMI 내에서의 형상 관리CMMI(Capability Maturity Model Integration) 모델에서는 소프트웨어 구성 관리가 핵심 프로세스로 간주되며, 다음의 성숙도 수준으로 나뉜다:Level 1 - 초기(Initial.. 2025. 2. 23.
[Software Engineering] Software Maintenance and Evolution Software Maintenance and Evolution소프트웨어 변경 (Software Change)소프트웨어 변경은 불가피함소프트웨어 사용 중 새로운 요구사항이 발생비즈니스 환경 변화오류 수정 필요새로운 하드웨어 및 장비 도입성능 및 신뢰성 개선 필요기존 소프트웨어 시스템의 변경을 관리하는 것이 조직의 주요 과제소프트웨어 유지보수 및 발전 (Software Maintenance and Evolution)유지보수(Maintenance): 소프트웨어가 배포된 후 수정하는 작업유지보수, 발전(Evolution), 리엔지니어링(Reengineering)은 종종 같은 의미로 사용됨유지보수의 유형소프트웨어 결함 수정 유지보수시스템의 요구사항 충족을 위한 문제 해결운영 환경 변화에 따른 적응 유지보수새로운 .. 2025. 2. 23.
[Software Engineering] Debugging What is Debugging디버깅(Debugging)은 테스트 과정에서 발견된 오류를 수정하는 과정이다.디버깅 절차는 다음과 같이 진행된다:테스트 케이스 실행 → 오류 발생 → 원인 추정 → 원인 확인 → 수정 → 회귀 테스트(Regression Test) → 새로운 테스트 케이스 실행 디버깅 과정에서 오류의 증상과 실제 원인은 반드시 동일한 위치에 있거나 직접적으로 연결되지 않을 수도 있다. 다음과 같은 상황이 발생할 수 있다:증상과 원인이 지리적으로 분리될 수 있음 (Symptom and cause may be geographically separated)프로그램의 한 부분에서 문제가 발생했지만, 실제 원인은 다른 모듈이나 시스템에 있을 수 있다.예: 클라이언트 애플리케이션에서 UI가 깨지는 문제.. 2025. 2. 22.
[Software Engineering] Mutation Analysis, Automated Testing Mutation AnalysisMutation Analysis(돌연변이 분석)는 프로그램의 소스 코드나 바이트 코드에 의도적으로 변형(돌연변이)을 가하고 테스트를 실행하여, 테스트가 얼마나 효과적인지 평가하는 기법이다.목적테스트가 올바르게 작성되었는지 확인테스트가 소프트웨어 요구사항을 충분히 반영하고 있는지 검증개요Mutation Operators(변이 연산자)를 선택하여 원본 코드에 적용코드의 일부를 변형하여 Mutant(돌연변이 코드) 생성테스트 실행 후, 변경된 코드가 감지되면 Mutant는 "killed(사멸)" 되었다고 판단감지되지 않으면 해당 테스트가 충분히 강력하지 않다는 의미Weak and Strong Mutation Testing Mutation Operators (변이 연산자)문장 삭제.. 2025. 2. 21.