728x90 반응형 분류 전체보기301 정렬 알고리즘 정렬 알고리즘이란? n개의 숫자가 입력으로 주어졌을 때, 이를 사용자가 지정한 기준에 맞게 정렬하여 출력하는 알고리즘 정렬이 일어나는 장소에 따라 내부정렬(internal sorting) 데이터의 크기가 주 기억장소 용량보다 적을 경우 기억장소를 활용하여 정렬하는 방법 - 버블정렬, 삽입정렬, 선택정렬, 퀵정렬, 쉘정렬 힙정렬 외부정렬(external sorting) 데이터의 크기가 주기억장소의 용량보다 클 경우 외부 기억장치를 사용하여 정렬하는 방법 - 머지정렬 선택정렬(Selection sort) 현재 위치에 들어갈 값을 찾아 정렬하는 배열 정렬 되지 않은 인덱스의 맨 앞에서 부터, 이를 포함한 그 이후의 배열값 중 가장 작은 값을 찾는다. 가장 작은 값을 찾으면, 그 값을 현재 인덱스의 값과 바꿔준.. 2019. 4. 18. 자료구조와 알고리즘 자료구조란? 프로그램이란 데이터를 표현 알고리즘이란? 표현된 데이터를 처리 알고리즘을 평가하는 두 가지 요소 - 시간 복잡도 - 공간 복잡도 시간 복잡도의 평가 방법 - 중심이 되는 특정 연산의 횟수를 세어서 평가를 한다. - 데이터의 수에 대한 연산횟수의 함수 T(n)을 구한다. O(1) - 상수 시간 알고리즘이 문제를 해결하는데 오직 한 단계만 거친다. O(log n) - 로그 시간 문제를 해결하는데 필요한 단계들이 연산마다 특정 요인에 의해 줄어든다. O(n) - 직선적 시간 문제를 해결하기 위한 단계의 수와 입력값 n이 1:1 관계를 가진다. O(n^2) - 2차 시간 문제를 해결하기 위한 단계의 수는 입력값 n의 제곱이다. O(C^n) - 지수 시간 문제를 해결하기 위한 단계의 수는 주어진 상수.. 2019. 4. 18. 데드락 교착상태(DeadLock) 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태 시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생 p1과 p2가 리소스 A,B 둘다를 얻어야 한다고 가정할 때, t1에 p1이 리소스를 A를 얻고, p2가 리소스 B를 얻었다면, t2때 p1은 리소스 B를, p2는 리소스 A를 기다리게 된다. 하지만 서로 원하는 리소스가 상대방에게 할당되어 있기 때문에 두 프로세스는 무한정 기다리게 되고, 이 상태를 데드락 상태라고 한다. 데드락 발생 조건 4가지 모두 성립할 때 발생 상호 배제(Mutual exclusion) 자원은 한 번에 한 프로세스 만이 사용할 수 있어야 한다. 점유 대기(Hold and Wait) 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스.. 2019. 4. 17. 동기화(Synchronization) 프로세스 동기화란? 프로세스들이 공유 자원을 사용할 때 일련의 규칙을 지키도록 하는 것 상호 협력하는 다수의 프로세스들이 공유 자원 혹은 데이터를 사용하는 경우, 경쟁 상태(Race Condition)으로 인해 그 공유 자원을 신뢰할 수 없게 된다. 경쟁 조건이란? 여러 프로세스가 공유 데이터를 동시에 접근할 때 공유 데이터에 대한 접근 순서에 따라 실행 결과가 달라지는 상황 임계 구역(Critical section) 둘 이상의 프로세스 혹은 쓰레드가 공유하는 자원이지만 동시에 둘 이상의 프로세스가 접근 할 수는 없고 특정 시간에 오직 하나의 프로세스만 접근 가능한 코드 영역 EX) 은행 계좌 은행 계좌는 입금과 출금 동기화가 올바로 이루어져야 은행 시스템을 신뢰할 수 있다. 입금 프로세스가 처리되고 있.. 2019. 4. 17. 쓰레드(Threads) 프로그램이란? 어떤 작업을 위해 실행 할 수 있는 파일 프로세스란? 실행 중인 프로그램 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. 쓰레드란? 프로세스 내에서 실행되는 흐름의 단위 프로세스의 특정한 수행 경로 프로세스가 할당받은 자원을 이용하는 실행의 단위 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code,.. 2019. 4. 17. 애자일 개발 기법 XP(eXtreme Programming) 비즈니스 상의 요구가 시시각각 변동이 심한 경우 적합한 개발 방법 애자일 개발 프로세스라 불리는 개발 방법 중 대표적인 하나로 꼽힌다. 비교적 적은 규모의 인원의 개발 프로젝트에 적용하기 좋다. 개발 문서 보다는 소스코드를, 조직적인 개발의 움직임보다는 개개인의 책임과 용기에 중점을 둔다. XP는 애자일 방법론과 구분되는 특징으로 테스팅이 있다. XP는 프로그래머들이 코딩을 할 때 테스트 코드를 작성하도록 함과 동시에 테스트를 기반으로 프로젝트를 완성시켜 나가도록 한다. 이러한 테스트에 기반을 둔 프로젝트 발전 과정은 애자일 방법론의 기본 개념인 "반복적으로 프로토 타입을 고객에 전달함으로써 고객의 요구사항 변화에 민첩하게 대응한다" 를 실천하는데 큰 도움을 줄.. 2019. 4. 17. Agile software development 애자일 기법 - 2~3주마다 새로운 시스템을 만들어서 고객이 사용 - 요구사항에 대한 피드백을 빨리 확보하기 위해 고객이 개발 프로세스에 참여 - 비공식적인 커뮤니케이션을 통해 문서화를 최소화 비지니스 요구사항 소프트웨어를 빨리 개발하고, 배포해야 함 대부분의 비지니스 시스템에서 가장 중요한 요구사항 요구사항의 변경 시스템이 설치되고 사용자가 시스템을 경험한 후, 요구사항이 명확해짐 계획 주도 소프트웨어 개발 프로세스 요구사항 명세, 시스템 설계, 구축, 테스트의 프로세스는 신속한 SW 개발에 적합하지 않음 시스템에 대한 계획, 설계 및 문서화에 오버헤드가 많이 발생(항공 우주 분야, 항공기 제어 시스템) 애자일 기법의 특징 명세화, 설계 및 구현 프로세스가 중첩됨 시스템을 증가분의 연속으로 구현 개발 .. 2019. 4. 17. 이전 1 ··· 32 33 34 35 36 37 38 ··· 43 다음 728x90 반응형