Computer Science/자료구조 5

배열(Array) - 정의와 4가지 형태의 배열에 대하여

배열이란: "같은 형태"의 데이터(자료형)가 "연속적"으로 붙어서 저장되어 있는 자료 구조.특징검색이 빠르다(여러 기법들 이용)탐색이 빠르다(O(1)만에 찾을 수 있음(컴퓨터 특성))삭제, 삽입이 느리다(연속된 메모리를 차지하는 특성상 그렇다)사이즈가 고정적이다4가지 형태의 배열(packed, sorted를 기준으로)packed : 사용하는 인덱스만 왼쪽으로 몰아놨다.sorted : 인덱스 순으로 값이 정렬되어 있다. (여기선 오름차순)Packed, Unsorted(가장 간단한 형태)index01234567value374102--- 가장 보편적으로 알고 있는 형태.여기에 추가로 값이 몇 개 저장되어있는지 세는 변수가 있다고 하자.counter(C)5Search : 하나 하나 처음부터 뒤져봐야 한다. O(..

컴퓨터 내부가 어떻게 돌아가는가

우리는 코드를 치고 실행하며, 그 실행 결과를 본다.그 코드에는 변수, 포인터, 연산 등 다양한 것들이 있다.그렇다면 도대체 '실행하면'이라는 과정에서는 무엇이 일어나고 어떻게 동작하는가?그것에 대한 답이 되겠다. (러프하게)CPU, BUS, Memory, Variable and Pointer참고 CPU: https://namu.wiki/w/%EB%AA%A8%EC%8A%A4%20%ED%85%8C%ED%81%AC%EB%86%80%EB%A1%9C%EC%A7%80%206502?rev=70기본적으로 컴퓨터는 '계산해서 적는다.'가장 간단하게 말하자면 저게 전부이다.좀더 디테일하게 적어보자면'메모리로부터 꺼내서 (BUS를 통해 전달하고) CPU에서 계산하고 메모리에 적는다.'이다.우리는 전자회로를 만들진 못하더라..

튜링의 재귀적 정지 문제 증명

참고 자료:https://namu.wiki/w/%EC%A0%95%EC%A7%80%20%EB%AC%B8%EC%A0%9C원본 튜링의 정지 문제 증명은 튜링 머신과 대각선 논법을 통해 증명하나,러프하게 재귀와 소스 코드 만으로도 할 수 있다.어떤 프로그램과 입력 값을 인자로 받아 입력에 대한 프로그램의 동작이 무한한지, 멈추는지판별이 가능한 프로그램 D가 있다고 하자. (귀류)$$D(M, X) = {YES, NO} (M=Program, X=input)$$멈추면(끝나는게 가능하면) YES, 무한히 돌아가면 NO그러면 D의 출력과 반대로 출력을 하는 프로그램도 가능할 것이다.$$D'(M,X) = {NO, YES}$$D가 YES일 때, D'은 NO, D가 NO일 때 D'은 YES인 프로그램 D'은 당연히 가능하다...

자료구조를 왜 배우는가?

컴퓨터공학부 교수님의 일화(약 10년 전)생물학 교수: 아니 컴퓨터공학이 왜 대학에 있는겁니까교수님: ?????? 미국 대학에도 다 있는데요????생물학 교수: 컴공 그거 밖에서 6개월 학원 다닌거랑 다를게 없다는데요, 대학에 있을 필요가 있나요교수님: 하하 뭐 그렇긴 하죠...교수님: (속으로) '그러게 뭐가 문제일까..'   이렇듯 옛날(10여년 전)에는 한국 소프트웨어 업계는 쉬운 일들이 대부분이었기에, 복잡하고 어려운 것들을 경시했다. 그러나 이제는 삼성 핸드폰이 대표적이듯이 복잡하고 어려운 것들을 해 나가는, 해야만 하는 시대가 왔다.  그렇기에 '기초적인' 지식들이 있어야 하고, 그러한 지식들이 있어야만 위에 쌓아 올려가며 어려운 문제들을 해결해 나갈 수 있다. 그 '기초적인' 지식이 무엇이냐..

자료구조란

정의 : 내가 자료구조에 대해서 처음 접한 책인 (이하 )에서는 "자료구조란 데이터를 조직하는 방법" 이라고 했다. 두 번째로 접한 책인 (이하 )에서는 "자료구조란 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계", 쉽게 말해서 "자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법" 이라고 정의했다. 문병로 교수님의 (이하 )에서는 어떠한가, "알고리즘의 선수 과목은 자료구조다. ... 자료구조는 생각의 전개를 위해 필요한 기본적인 도구다." 라고 하셨다. 개인적인 견해로는 에서 정의한 자료구조의 의미가 가장 함축적으로 깔끔하게 이를 표현하는 것 같다. 컴퓨터로 다룰 모든 것들은 데이터이고, 그것들을 어떻게 저장하는가, 그것들 사이의 관계를 어떻게 다룰 것인가가 자료구조이기에 '자료..