![[Java] 2-3 트리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxFEIk%2FbtsOmuTMFPw%2F8wxcF3pkcKa1Dg0ONtCTHk%2Fimg.png)
본 게시글은 학부 강의 '자료구조', 온라인 강의 'Honglab Data Structure(https://www.honglab.ai/)' 그리고 강의 교재 '자바와 함께하는 자료구조의 이해'의 내용들을 바탕으로 이해한 내용을 정리하였습니다. 이진 트리가 아니어도 괜찮아! 노드에 키를 2개까지 넣어보자!! 자료구조 등의 여러 컴퓨터 과학 과목을 듣다보면 모든 테크닉에는 장단점이 명확하게 존재했다. 그래서 단점을 보완한 새로운 테크닉이 등장해도 거기에는 또 다른 단점이 생겼고 보완되기 위해 지금도 새로운 방법론들이 계속 제시되고 있다. 2-3 트리도 아이디어와 이전 트리의 단점을 보완하기 위해 탄생했을 것이다. 앞서 작성한 이진 탐색 트리에는 단점이 존재했다. 일반적인 BST에는 최악의 경우 연결..
![[Java, C++] AVL 트리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxbvfR%2FbtsOeDP00sn%2Fr7hLrQsPnII0NTpMKgsvn0%2Fimg.png)
본 게시글은 학부 강의 '자료구조', 온라인 강의 'Honglab Data Structure(https://www.honglab.ai/)' 그리고 강의 교재 '자바와 함께하는 자료구조의 이해'의 내용들을 바탕으로 이해한 내용을 정리하였습니다. AVL 트리(Hight Balanced Binary Trees)AVL 트리는 Adelson-Velskii & Landis Tree 라고도 한다. 만든 사람의 이름을 땄다.AVL 트리는 트리가 한쪽으로 치우치는 것을 방지하여 트리 높이의 균형을 유지균형(Balanced) 이진 트리 : 탐색, 삽입, 삭제 연산의 수행 시간 O(logn) 보장 AVL 트리는 삽입이나 삭제로 인해 균형이 어긋나면 회전 연산을 통해 트리의 균형을 유지한다. AVL 트리는 임의의 노..
![[Python] 리스트(List) 심화 - 파이썬 자료구조](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcSVPS%2FbtsOdjDFExy%2FtyzVDNecc1p18XPtBDt280%2Fimg.jpg)
본 강의는 학부 강의 '컴퓨터 프로그래밍 1'과 강의 교재 '파워 유저를 위한 파이썬 Express' 의 내용을 바탕으로 이해한 내용을 작성하였습니다. 리스트가 어떤 친구인지 알았으니, 이제 리스트를 잘 이용할 수 있도록 고급 스킬들을 알아보도록 하자.추후에 리스트에 등장하는 인덱스 개념은 전공 자료구조에 정말 흔히 쓰이는 단어이니 나와 물아일체가 되도록 체득하자. 리스트 합병과 복제 heroes1 = ["Ironman", "Thor"]heroes2 = ["Hulk", "Hawkeye"]avengers = heroes1 + heroes2# avengers의 리스트는 ["Ironman", "Thor", "Hulk", "Hawkeye"] 가 된다.# numbers = [5, 6, 7, 8] * 3#..
![[Java, C++] 이진 탐색 트리(Binary Search Tree)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddtcWv%2FbtsOdDWqSvS%2FPXl5sY1mJArBvJIBG1Fhek%2Fimg.png)
본 게시글은 학부 강의 '자료구조', 온라인 강의 'Honglab Data Structure(https://www.honglab.ai/)' 그리고 강의 교재 '자바와 함께하는 자료구조의 이해'의 내용들을 바탕으로 이해한 내용을 정리하였습니다. 사전(Dictionary)저장된 데이터에 대해 탐색, 삽입, 삭제, 갱신 등의 연산을 수행할 수 있는 자료구조어찌보면 파이썬의 딕셔너리와 일맥상통. Key와 Value가 존재한다는 것. 탐색 트리저장된 데이터에 대해 접근, 탐색, 삽입, 삭제, 갱신 등의 연산을 수행할 수 있는 자료구조배열, 연결 리스트 : O(n) 시간스택, 큐 : 특정 응용에 적합한 자료구조이진 탐색 트리, AVL 트리, 2-3 트리, 2-3-4 트리, RB 트리, B-트리 이진..
![[Java, C++] 트리(Tree)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJhh2e%2FbtsNSLArpOa%2Fd4ytBxa0VkKlykbsBSnCG1%2Fimg.png)
본 게시글은 학부 강의 '자료구조', 온라인 강의 'Honglab Data Structure(https://www.honglab.ai/)' 그리고 강의 교재 '자바와 함께하는 자료구조의 이해'의 내용들을 바탕으로 이해한 내용을 정리하였습니다. 트리 배열이나 연결 리스트 - 데이터를 일렬로 저장하므로 탐색을 순차적으로 수행정렬된 배열에서는 이진 탐색을 통해 효율적인 탐색이 가능하지만, 삽입 / 삭제 후 정렬 상태를 유지하기 때문에 O(n) 시간일반적인 트리(General Tree)는 트리를 거꾸로 세워놓은 형태의 자료구조HTML과 XML의 문서 트리, 자바 클래스 계층구조, 운영체제의 파일시스템, 탐색트리, 이항(Binomial) 힙, 피보나치(Fibonacci) 힙과 같은 우선순위 큐공집합도 트리..
![[Java, C++] 스택(Stack)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOifqJ%2FbtsNAQvXgKX%2FRBGjkPysldYMxiuHWG9LiK%2Fimg.jpg)
본 게시글은 학부 강의 '자료구조', 온라인 강의 'Honglab Data Structure(https://www.honglab.ai/)' 그리고 강의 교재 '자바와 함께하는 자료구조의 이해'의 내용들을 바탕으로 이해한 내용을 정리하였습니다. 스택(Stack)한쪽 끝에서만 항목 삽입 / 삭제하는 자료구조새 항목을 저장하는 연산 : pushTop 항목을 삭제하는 연산 : pop후입 선출(Last-In First-Out, LIFO) 배열로 구현한 스택마지막 index를 top에 가지고 있다.A[++top;] = "망고"A[top++;] = "망고"는 틀린 문법! 주의할 것 단순 연결 리스트로 구현한 스택정의된 스택대로 사용하는게 제일 효율적이다. 배열로 구현한 ArrayStack class..
![[Java] 배열(Array)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkEJ5p%2FbtsNttTLclp%2FGZD3UHqkavvcOIp6t22nJk%2Fimg.jpg)
본 게시글은 학부 강의 '자료구조', 온라인 강의 'Honglab Data Structure(https://www.honglab.ai/)' 그리고 강의 교재 '자바와 함께하는 자료구조의 이해'의 내용들을 바탕으로 이해한 내용을 정리하였습니다. 배열(Array) 동일한 타입의 원소들이 연속적인 메모리 공간에 할당되어 각 항목이 하나의 원소에 저장되는 기본적인 자료구조특정 원소에 접근할 때에는 배열의 인덱스로 O(1) 시간에 접근새 항목을 배열 중간에 삽입하거나 중간에 있는 항목을 삭제하면, 뒤따르는 항목들을 1칸씩 뒤로 또는 앞으로 이동 : O(n) 시간 a는 배열 이름인 동시에 배열의 첫번째 원소의 레퍼런스를 저장a[i]는 인덱스 i를 가지는 원소를 가리키는 레퍼런스a[i]는 a가..
![[Python] 반복문(for 문)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSsoZd%2FbtsNl9hz4B5%2FHvQKzNyKJGFv2bIP6WU5wk%2Fimg.jpg)
본 강의는 학부 강의 '컴퓨터 프로그래밍 1'과 강의 교재 '파워 유저를 위한 파이썬 Express' 의 내용을 바탕으로 이해한 내용을 작성하였습니다. 반복의 중요성우리들의 생활에서는 반복적인 작업들이 필요하다.반복적이고 단순한 작업은 컴퓨터를 이용하여 자동화하면 된다. 반복의 종류횟수 반복(for 문) : 정해진 횟수만큼 반복한다.조건 반복(while 문) : 특정한 조건이 성립되는 동안 반복한다.이들을 상황에 따라 적절히 선택하여 사용해야 한다. 횟수 반복은 반복을 시작하기 전에 반복의 횟수를 미리 아는 경우에 사용한다. * 시퀀스 : 숫자의 나열. 리스트로 만들 수 있다. [ ... ] 조건 반복은 특정한 조건이 만족되는 동안 계속 반복한다. 리스트항목들을 저장하는 자료 구조 sli..
![[Java] 노베이스가 보는 자료구조](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrM20n%2FbtsNkLH45d6%2FnokDMxew8jD9LZRjXWQKW1%2Fimg.jpg)
본 게시글은 학부 강의 '자료구조', 온라인 강의 'Honglab Data Structure(https://www.honglab.ai/)' 그리고 강의 교재 '자바와 함께하는 자료구조의 이해'의 내용들을 바탕으로 이해한 내용을 정리하였습니다. AI를 전공하기 위한 Motivation AI를 전공하기로 마음먹고 프로그래밍을 시작한 지 어느 덧 1년이 지나가고 있다. 하지만 아직 나는 컴퓨터의 0.1%도 이해하지 못하고 있는 것 같다. 모든 배움에는 이유가 있어야 한다고 믿고 학업을 정진해 왔다. 프로그래밍 언어는 컴퓨터를 알기 위해서는 당연히 알아야 했기에 이유가 충분했지만, 전공과정으로 넘어가면서 부터는 어디에 적용되기에 중요한 과목인지 조차 제대로 체감하지 못하고 수업을 듣다보니 머리에 제대로 들..
![[Python] 함수(Function)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdxj86d%2FbtsNePRLW59%2F07HDddKetw5iJk9yS0Dvh0%2Fimg.jpg)
본 게시글은 학부 강의 '컴퓨터 프로그래밍' 과 참고 교재 '파워 유저를 위한 파이썬 Express'를 바탕으로 이해한 바를 작성하였습니다. 초 중 고등학교에서 수학 수업을 잠깐이라도 들어봤다면 '함수' 라는 단어는 정말 많이 들어봤을 것이다. 칠판에 그린 이런 그래프 같은 것들이 함수라고 생각하는 사람이 꽤 많다고 생각한다. 나도 한때는 그랬으니까.하지만 이 그래프는 단지 함수식에 숫자를 넣어 2차원 평면에 그림으로 옮겨놓은 것 뿐이다. 그럼 함수가 뭔데? 숫자나 데이터를 집어넣으면 다른 숫자나 데이터가 나오는 이 박스를 함수라고 부른다. def function(x): return x + 2 이 파이썬 코드를 보자.수학의 f(x) 처럼 위에 x에 어떤 수를 넣으면 거기에 2라는 수를..
![[Python] 변수와 수식](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcv15TQ%2FbtsNfPi9GdI%2FzfvkLYVIghMPj6tiEtqDH1%2Fimg.jpg)
본 게시글은 학부 강의 '컴퓨터 프로그래밍 1'의 내용과 교재 '파워 유저를 위한 파이썬 Express'를 바탕으로 이해한 내용들을 정리하였습니다. 프로그래밍의 필수 재료가 되는 변수와 수식에 대해 알아보자 변수 변수(Variable)는 컴퓨터의 메모리 공간에 이름을 붙이는 것으로 우리는 여기에 값을 저장할 수 있다.프로그래밍에서 변수는 메모리를 일컫는다. 이름 붙인 메모리 공간. 변수 정의 Python에서는 변수에 값을 저장하면 변수가 자동으로 생성된다. ## Syntax. 변수 정의하는 법# 변수 이름 = 값x = 10# 여기서 x는 변수이름, 10은 값이 된다. 프로그래밍에서 등호(=)는 우리가 지금껏 알던 등호와는 약간 의미가 다르다.프로그래밍에서는 대입연산자, 할당연산자. 대입의 의미..