목록전체 글 (200)
공부중
탐색은 흔히 알고 있는 것 처럼 찾는다는 의미를 가지고 있다. 그 중 먼저 순차탐색에 대해서 알아보자.. "무식하면 용감하다" 이런 말이 있지 않은가?? 이 말은 바로 이 탐색을 보고 하는 말인 것 같다. 순차탐색은 말 그대로 처음부터 끝까지 하나하나 일일히 차례대로 비교하는것이다. 찾아야 되는 데이터의 수가 10개든 100개든 1000개든 π의 소수점 개수만큼 있어도 일일히 차례대로 하나하나 비교하는 것이다. 이런 무식한 방법은 물론 너무나도 무식해서 찾는데 보통 데이터의 량에 비례하게 속도가 걸린다. 물론 맨 첫 번째에 있으면 고맙겠지만 보통은 그럴일이 없으니 말이다. 하지만 이 방법이 주는 장점은 바로 구현이 간단해서 버그를 만들 가능성이 매우 적다. 구현이 쉬워서 배열, 링크드 리스트 모두 쉽게 ..
비록 게임은 잘 못하지만 동영상 캡쳐해 보았습니다. 플레이 및 캡쳐한 노트북은 한성컴퓨터 보스몬스터 Lv77 입니다. CPU : Intel(R) Core(TM) i7-3630QM 2.40GhzRAM : 16GB DDR3VGA : NVIDIA GeForce 670MXSSD : Samsung 840 250GBOS : Windows 8 Pro K with Media Center
1월 29일부터 크라이시스3 베타가 시작되었습니다. 사향은 다음과 같이 나왔네요.. 최소사향 OS : Windows Vista, 7 or 8VGA : Direct X 11 을 지원하는 그래픽카드와 1GB의 그래픽카드 메모리CPU : 듀얼코어 CPURAM : 2GB (Vista에서는 3GB) 권장사향OS : Windows Vista, 7 or 8VGA : Direct X 11 을 지원하는 그래픽카드와 1GB의 그래픽카드 메모리CPU : 쿼드코어 CPURAM : 4GB http://store.origin.com/store/eara/ko_KR/html/originweb/demos/pbPage.demos-ko_KR 크라이시스3 베타를 다운로드 받고 .. 생각보다 오래걸리는군요 용량은 대략 3GB 정도 다운로드 ..
⊙TCP와 UDP ○TCP/.IP 프로토콜 스택 TCP/IP 스택 이 4개의 계층으로 나뉜다 이로 데이터 송수신의 과정을 네 개의 영역으로 계층화 했다는 의미 이다. 인터넷 기반의 효율적인 데이터 전송을 하나의 큰 프로토콜 설계로 해결한 것이 아닌 작게 나눠서 계층화 하려는 노력이 시도 끝에 TCP/IP프로토콜 스택이 나왔다 그래서 TCP 소켓을 생성해 데이터를 송 수신할 경우 위의 그림과 같이 4개의 계층으로 통해 데이터를 송수신 하게 된다. 그러나 UDP소켓을 생성하여 데이터를 송수신할 경우 다음 네 계층을 통해 데이터를 송 수신 하게 된다. 이러한 각각 계층은 OS와 같이 소프트웨어 혹은 NIC같은 물리 장치가 담당한다. ○ LINK 계층 LINK계층은 물리적인 영역의 표준화에 대한 결과이다. 가장..
퀵 정렬(Quick Sort)… 이름처럼 빠르다고 한다. 퀵 정렬은 분할 정복(Divide and Conquer)에 기반되어 있다. 전체를 공략하는 대신 전체를 구성하는 구성 요소들을 잘게 나누어 쪼갠 적을 공략하는 기법이다. 퀵 정렬은 다음과 같이 정렬을 수행한다. 데이터 집합 내에서 임의의 기준을 선택하고 기준보다 작은 것은 순서에 관계 없이 기준의 왼쪽에 큰 것은 오른쪽에 위치 이렇게 나눈 데이터를 위에서와 같이 임의의 기준을 다시 선택하고 같은 방법으로 데이터를 분할 한다. 1과 2를 더 이상 나눌 수 없을 때 까지 반복 하면 정렬이 완성 된다. 642315↑기준→ ←642315↑기준 → ←642315↑기준 → ←642315↑기준 →←642315↑기준 → ←기준을 6으로 잡고 Left와 Right..
삽입 정렬은 데이터 집합을 순회 하면서 정렬이 필요한 요소를 뽑아내 이를 다시 적당한 곳에 삽입해가는 알고리즘이다. 데이터 집합에서 정렬 대상이 되는 요소들을 선택 이 정렬 대상은 왼쪽부터 선택해 나가며, 그 범위가 처음에는 2개지만, 알고리즘 반복 횟수가 늘어날 때마다 1개씩 커진다. 정렬 대상의 최대 범위는 '데이터 집합의 크기 - 1'이다. 정렬 대상의 가장 오른쪽에 있는 요소가 정렬 대상 중 가장 큰 값을 가지고 있는지 확인 그렇지 않으면 정렬 대상에서 뽑고 이 요소가 위치할 적절한 곳을 정렬 대상 내에서 찾는다. (적절한 위치는 자신보다 더 작은 요소가 없는 위치를 말함) 뽑은 요소를 삽입할 적절한 곳을 찾았을 때 정렬 대상 내에서 삽입할 값보다 큰 값을 갖는 모든 요소를 한 자리씩 오른쪽으로 ..
버블 정렬은 알고리즘이 데이터를 정렬하는 과정이 물속에서 일어난 거품이 위로 올라오는 모습과 같다고 해서 붙혀졌다. 실제로 데이터가 뜨거나 하지는 않지만 간단하고 손쉽게 할 수 있는 정렬이다. 버블정렬은 데이터들을 순회하면서(곳곳히 돌면서) 교환을 통해서 정렬을 한다. 다음을 보자. 5164231부터 6까지 무작위로 저장된 배열이 있다고 해보자 이때 버블 정렬을 이용해 오름차순으로 정렬 해보자. 516423먼저 5와 1을 비교했을 때 5가 1보다 큰 수이므로 서로 위치 교환을 해준다. 1564231과 5의 위치를 바꾼 뒤 5와 6을 비교해보자. 5는 6보다 작으므로 이동의 변화가 없다. 그러므로 비교대상을 다음으로 넘어간다. 156423비교 대상을 넘어가서 6과 4를 서로 비교해 보자. 6은 4보다 큰 ..
우선순위 큐에 적당한 것은 힙으로 결정이 되었다. 힙은 '트리 구조'이다. 트리를 구현하는 방법에는 배열과 연결 리스트 둘 중 하나를 선택 해야 하는데.. 앞에서 트리를 구성했을 때 연결 리스트로 구현을 하였으니 여기서도 똑같이 구현 하면 되겠지만 이와 같은 단점이 있다. "연결 리스트를 기반으로 힙을 구현시 새로운 노드를 힙의 마지막 위치에 추가하는 것이 쉽지 않다." 해결은 가능하고 사소하지만 간단한 문제가 아니다.. 배열 기반의 힙의 경우 이런 문제는 매우 간단하게 처리 된다. 그래서 '힙'같이 새로운 노드를 추가한 이후에도 완전 이진 트리를 유지해야 하는 경우 연결리스트가 아닌 배열을 기반으로 트리를 구현해야 한다. 배열을 기반으로 힙을 구현할 때 필요한 것은 다음과 같을 것이다. 왼쪽과 오른쪽 ..