목록CSE/자료구조&알고리즘 (13)
밍경송의 E.B
이 글은 시험이 21시간정도 남은 사람이 내용 정리를 위해 적는 글입니다. *[C언어로 쉽게 풀어쓴 자료구조] 책과 숙영리 교수님의 강의를 참고하여 작성하였음을 밝힙니다. 공부하기 실ㅎ어서 이모티콘이라도 바꿔야겠음! 🪸😎 🪸 특징 : 후입선출(LIFO) - 스택의 상단에서만 삽입/삭제 연산이 일어남 - push () : 스택에 데이터를 추가 - pop () : 스택에서 데이터를 삭제 🪸 스택을 쓰는 경우 call stack (recursion) undo-redo stack (ctrl+z 같은_) string reversal graph algorithm back tracking - maze solving problem balanced parenthesis stack (괄호 검사 알고리즘) expressio..
이 글은 시험이 2일하고 18시간정도 남은 사람이 내용 정리를 위해 적는 글입니다. *[C언어로 쉽게 풀어쓴 자료구조] 책과 숙영리 교수님의 강의를 참고하여 작성하였음을 밝힙니다. 🃏배열 : 같은 형의 변수를 여러 개 만드는 경우에 사용하는 자료 구조 🤔연속적인 메모리 공간이 할당되고 인덱스 번호를 이용하여 쉽게 접근이 가능함(readability ↑) - random access lookup time = O(1) - add new element at Kth index = O(N) 🤔0부터 N까지의 ID가 할당되는 데이터를 처리하기 위해서는 (N+1) element 크기의 배열이 필요함 -> 인덱스는 0부터! *예시 더보기 double A[10]; ... 이렇게 하면 행 순서대로 작성됨. *처리: 0열에..
이 글은 시험이 2일하고 18시간정도 남은 사람이 내용 정리를 위해 적는 글입니다. *[C언어로 쉽게 풀어쓴 자료구조] 책과 숙영리 교수님의 강의를 참고하여 작성하였음을 밝힙니다. 🤔시작 전 정리사항 분할 정복(Divide Conquer) 과 동적 프로그래밍(Dynamic programming) 1) 분할 정복 : 주어진 문제를 더 작은 동일한 문제들로 분해하여 해결하는 방법 *특징 - Recursive(순환) method - 각 Sub-problem들은 독립적으로 해결됨. - Top-down 방식 2) 동적 프로그래밍 : 큰 문제를 작은 문제로 나누어 풀어 해결하는 방법 *특징 - Iterative (반복) method - 각 Sub-problem들은 종속적임. - Bottom-up 방식 @ 1)과 2..
헷... 자료구조를 다시 한 번 듣게 됐습니다.. 분명 ? 다시 듣는 거긴 한데 처음 듣는 거임.. ㅇ네에 출석은 모르겠지만 공부는 열심히 해야지!! .. 🃏 이모티콘 고르는 재미가 상당하다 오늘은 이거! 🤔 이 글은 시험이 2일하고 20시간정도 남은 사람이 내용 정리를 위해 적는 글입니다. *[C언어로 쉽게 풀어쓴 자료구조] 책과 숙영리 교수님의 강의를 참고하여 작성하였음을 밝힙니다. 🤔시작 전 정리사항 - OS에 따른 메모리 사용량 32-bits OS : Memory addr 단위가 32bits(=4bytes)이므로 2^32 -1(=대략 4GB) memory 사용 가능 64-bits OS : Memory addr 단위가 64bits(=8bytes)이므로 2^64 -1(=대략 16EB) memory 사..
오늘은 길었던 정통공과 이별하고,, 알고리즘의 아주 기초적이지만 나는 모르는 .. 개념들에 대해서 정리해보겠습니다. 아자 이전에 버블정렬(bubble sort) 알고리즘에 대해서 간략하게 정리했었는데요. 그때 버블 정렬의 시간 복잡도를 O(N^2)로 나타낼 수 있다고 배웠습니다. 오늘은 선택정렬과 삽입정렬에 대해서 다뤄볼텐데, 버블 정렬까지 세 알고리즘이 어떻게 다른지! 시간 복잡도는 어떤지! 이해해봅시다. 선택정렬(Selection sort) 선택 정렬의 키워드는 최솟값입니다. 간단하게 말하자면 배열의 왼쪽부터 시작해서 맨 마지막 셀까지 쭉 돌면서, 최솟값을 저장하고 순회가 끝나면 이를 맨 왼쪽 인덱스 값(인덱스 0이 아닐 수 있음)과 교환해주고,,그 과정을 정렬될 때까지 계속 반복하는 그런 알고리즘입..
이번엔,ㄴ... 안 보고 싶어도 항상 만나게 되는.. 빅 오 표기법을 이해해보겠습니다... 어짜피 자료구조 재수강해야되니까.. 일석이조다 이런 마음으로 하겠어요 하하하하하 "데이터 원소가 N개일 때 특정 알고리즘에 몇 단계가 필요할까?" 라는 질문에 대한 답을 우리는 빅 오 표현을 통해 내릴 수 있는데요. 빅 오 표현은 "O(N)" O(3)일까요? 땡!!!!!!!!!!!!!!!!!!!!!!!! => 정답은 O(1)입니다. 이유는, 빅 오의 본질은 '데이터의 수가 늘어나는' 상황에 있기 때문입니다. 데이터의 증가할 때 단계의 수가 어떻게 증가하느냐에 focus를 맞춰야 합니다. 따라서, 앞선 예제처럼 데이터 증가에 영향을 받지 않는,, 알고리즘은 O(1)과 본질적으로 같은 알고리즘이라고 볼 수 있겠습니다...