computer science63 [자료구조] 배열과 list(LinkedList, ArrayList) 이번시간에는 배열과 list에 대해서 알아보겠습니다. 배열 크기가 정해져 있다, 따로 추가적인 기능이 없다 데이터에 대한 인덱스를 가지고 데이터의 인덱스를 변하지 않는다 인덱스를 사용하여 빠르게 데이터 조회가 가능하다 크기가 정해져 있기 때문에 추가적인 데이터를 넣을 수 없다 데이터를 삭제해도 크기가 줄어들지 않는다 Object[] ary = new Object[4]; ary[0]="something1"; ary[1]="something2"; ary[2]="something3"; ary[3]="something4"; 배열은 다수의 데이터를 그룹핑해서 효율적으로 관리할 수 있는 데이터 자료구조입니다. 위의 코드를 보시면 먼저 크기가 4인 배열을 선언했습니다. 이런 배열의 가장큰 장점은 무엇일까요 ? 바로 .. 2019. 6. 2. [자료구조] 스택(Stack) 자료구조 첫번째 시간의 주제를 스택입니다. 사전에서는 "(깔끔하게 정돈하여) 쌓다[포개다]; 쌓이다, 포개지다" 정도로 설명되는 데요, 만약 저희가 뷔페에 가서 음식을 담을 접시를 사용할 때, 가장 위에부분을 가져가죠? 접시가 부족해서 다시 채울때도 위에 부터 다시 쌓습니다. 스택은 이와 똑같이 동작하는 데요, 스택을 LIFO(Last In First Out)구조를 유지합니다. 마지막에 들어가는 녀석이 처음 나오는 구조죠. 스택에 자료를 넣는 동작은 push, 빼는 동작은 pop이라고 합니다. 근데 만약, push할 때 스택이 모두 차있으면 어떻게 될까요 ? 이런 경우는 "stack overflow"라고 합니다. 반대로 pop할 때, 스택이 비어있는 경우를 "stack underflow"라고 합니다. 그.. 2019. 6. 1. [알고리즘] 합병정렬(Merge Sort) 이번 시간에는 합병정렬에 대해 공부해보겠습니다. 합병정렬은 앞서 설명한 퀵정렬화 함께 무척 빠른 정렬속도(O(nlogn))을 자랑하기 때문에, 반드시 알고 있어야 합니다 ! 합병정렬은 분할정복 기법을 사용하여 문제를 해결하는 방법입니다. 분할정복은 해결할 수 없는 큰 문제를 해결할 수 있는 작은 단위의 문제로 나누고(분할) 해결한 후, 다시 합치는 합치는(정복)하는 과정입니다. 이 과정을 계속 반복하면서 정렬해 나가는 방법이 합병정렬 입니다. 일단 글보다는 실제로 정렬을 하면서 설명을 해보겠습니다 !! 여기서 l은 왼쪽부분, r은 오른쪽 부분입니다. [3 8 12 6 22 15 30 1] l r [ 3 8 12 6 ] [ 22 15 30 1 ] l r l r [ 3 8 ] [ 12 6 ] [ 22 15 .. 2019. 6. 1. [알고리즘] 퀵정렬(Quick Sort) 이번 시간에는 면접에서도 자주 나오는 퀵정렬에 대해 알아 보겠습니다. 퀵정렬에서는 pivot이라는 것을 사용합니다. 이 pivot이 중요한데, 그 이유는 정렬의 기준이 되기 때문입니다. 이 말이 무엇이냐 하면~예를 들어서, 2 6 4 12 3 17 11 15 19 8라는 숫자를 정렬한다고 해봅시다. 그렇다면 여기서 pivot은 아무거나 잡습니다. 정말로요 ! 여러분이 pivot이라고 정하고 싶은 숫자를 선택하시면 됩니다. 저는 12라는 숫자를 일단 pivot으로 잡아 보겠습니다. 그렇다면 이제 pivot을 기준으로 pivot보다 작거나 같은 수를 모두 pivot왼쪽으로 넘깁니다. 그러면, 다음과 같은 모양이 되겠네요. 이렇게 pivot왼쪽에는 pivot보다 작거나 같은 수가, pivot오른쪽에는 pivo.. 2019. 5. 25. 이전 1 ··· 10 11 12 13 14 15 16 다음