본문 바로가기

과거공부모음

(122)
나의 개발일지 TIL(Today I learned) - 자료구조와 알고리즘(트리, 힙, 그래프, BFS, DFS, 타임어택 문제풀기) Today I learned 트리 (Tree) 힙 (Heap) 그래프(Graph) DFS BFS 타입어택 문제풀기 트리 (Tree) 트리는 비선형 구조이다 비선형 구조는 선형 구조와 다르게 데이터가 계층적 혹은 망으로 구성되어있다 선형 구조와 비선형 구조의 차이점은 형태뿐만 아니라 용도에서도 차이점이 많다 선형 구조는 데이터를 저장하고 꺼내는 것에 초점이 맞춰져 있고 비선형 구조는 데이터를 표현하는데 초점이 맞춰져 있다 아래의 폴더 구조가 대표적인 비선형 구조인 트리 형태의 구조!! 트리는 계층형 구조이다 위아래가 구분이 되어 있다 트리에서 나오는 용어들을 정리해보자 Node: 데이터를 저장하는 기본 요소 Root Node: 트리의 맨 위에 있는 Node Level: 최상위 노드를 Level 0으로 하였..
나의 개발일지 TIL(Today I learned) - 자료구조와 알고리즘(해시) Today I learned 해시(hash) 해시(hash) 해시(hash) 구조란, 키(key)와 데이터(value)가 쌍으로 이루어진 데이터 구조이다 해시 구조에서는 키(key)를 이용하여 데이터(value)를 빠르게 찾을 수 있는 장점이 있다 우리는 파이썬에서 딕셔너리를 학습하고 사용해 본 적이 있다 딕셔너리가 바로 해시 구조이다! 해시와 관련된 영어들을 알아보자 키(key): 해시 함수의 input이 되는 고유한 값 해시(hash): 임의의 값을 고정 길이로 변환하는 것 해시 테이블(hash table): 키(key) 값의 연산에 의해 직접 접근이 가능한 데이터 구조 버킷(bucket), 슬롯(slot): 해시 테이블(hash table)에서 하나의 데이터가 저장되는 공간 해시 함수(hashing..
나의 개발일지 WIL(Weekly I learned) - 자료구조와 알고리즘 Weekly I learned 자료구조와 알고리즘 시간복잡도 공간복잡도 빅오표기법 배열 연결리스트 버블정렬 삽입정렬 선택정렬 회고록 FACTS 이번 일주일 동안 있었던 일, 내가 한 일 FEELINGS 나의 감정적인 반응, 느낌 FINDINGS 그 상황으로부터 내가 배운 것, 얻은 것 FUTURE 배운 것을 미래에는 어떻게 적용할지 FACTS 일주일간 자료구조와 알고리즘을 위해서 파이썬의 기본 문법을 공부했다 그리고 알고리즘을 왜 공부해야 하는지 이유와 알고리즘에 필요한 시간 복잡도, 공간 복잡도, 빅오 표기법에 대해서 학습했다 특강과 자습으로 배열과 연결 리스트에 대해서 학습을 진행했다 파이썬으로 연결 리스트를 직접 구현해보면서 더 확실하게 이해 할 수 있도록 했다 그리고 배열과 연결리스트를 이용해 알..
나의 개발일지 TIL(Today I learned) - 알고리즘 자료구조 특강 및 복습 HTTP / HTTPS 특강 Today I learned 자료구조 알고리즘 특강 자료구조 알고리즘 복습 HTTP / HTTPS 특강 자료구조 알고리즘 특강 스택과 큐 그리고 기본 정렬인 버블정렬 선택정렬 삽입정렬을 배웠다 스택이란 순서대로 차곡차곡 쌓아서 제일 위 부터 차곡차곡 빼는게 스택이다 LIFO(Last In First Out)의 성격을 가진 자료구조! 이것이 넘치면 StackOverflow가 된다 스택은 어디에 쓰일까? 모바일 앱을 사용하면 뒤로 가기 버튼을 꽤 많이 누른다 이때 사용하는 자료구조가 바로 스택이다 스택에는 push, pop, peek 또는 top이 있다 push는 스택에 원소를 Top에 삽입한다 pop은 스택의 Top의 원소를 가져오고 삭제한다 peek 또는 top은 스택의 Top의 데이터를 본다 큐란 FI..
나의 개발일지 TIL(Today I learned) - 알고리즘 자료구조 특강 및 복습 Today I learned 자료구조와 알고리즘 특강 연결리스트 복습 정렬 자료구조와 알고리즘 특강 시간복잡도 최악의 경우를 가정하여 프로그램 성능을 정량화하는 방법 꼭 최악의 경우를 기준으로 계산하도록 해야한다 공간복잡도 시간복잡도에 비해서 크게 중요하지 않다 하지만 공간도 최적화하면 당연히 좋다 현업에서 알고리즘의 성능 향상을 위해서 공간을 필수적으로 더 사용해야 한다면 주저하지 말고 공간을 더 사용하자! 배열의 주소끼리 연관성 최초 원소의 메모리 주소가 100 두 번째 원소의 메모리 주소 = 최초 원소의 메모리 주소 +( 원소의 데이터 타입에 따른 바이트 크기 ) 4바이트의 데이터 타입의 데이터를 저장한다면 100 -> 104 -> 108 이러한 특성 때문에 데이터를 빨리 찾을 수 있다 연결리스트 ..
나의 개발일지 TIL(Today I learned) - 알고리즘 특강 및 복습 Today I learned 강창민 튜터님의 알고리즘 특강 배열을 이용한 알고리즘 복습 강창민 튜터님의 알고리즘 특강 프로그래머는 생각할 수 있는 알고리즘 중에 어떤 게 최선의 알고리즘인지를 찾아내는 능력이 필요하다! 알고리즘이 왜 필요한가? 좋은 프로그램을 만들기 위해서 좋은 프로그램을 만들기 위해 꼭 필요한 자료구조와 알고리즘 알고리즘은 Computational thinking(컴퓨팅 사고) 능력을 극대화할 수 있는 과목이다! 알고리즘은 처음에 누구에게나 어렵다 시간이 걸려도 천천히 확실하게 꾸준히 공부하자! 중요한 건 꺾이지 않는 마음이다! 우리는 node.js를 배우는 반인데 왜 파이썬을 배우고 파이썬으로 알고리즘을 하는가? 파이썬은 어떤 언어에 비해서 짧은 코드로 빠르게 짤 수 있다 코딩 테스트..
나의 개발일지 TIL(Today I learned) - 자료구조와 알고리즘 Today I learned 시간복잡도와 공간복잡도 점근 표기법 배열과 연결리스트 이진탐색 재귀 함수 공간복잡도 공간복잡도는 입력값과 문제를 해결하는 데 차지하는 공간과의 상관관계이다 이 코드로 공간복잡도를 알아보자 def find_max_occurred_alphabet(string): alphabet_array = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "x", "y", "z"] max_occurrence = 0 max_alphabet = alphabet_array[0] for alphabet in alphabet_array: occurrence..
나의 개발일지 TIL(Today I learned) - 파이썬, 자바스크립트, 자료구조와 알고리즘 Today I learned 파이썬 자바스크립트 자료구조와 알고리즘 파이썬 코딩 테스트를 위한 파이썬 공부 파이썬의 변수 선언 a = 5 b = false c = "안녕" 자바스크립트처럼 let const 없이 자바처럼 int boolean 자료형 없이 변수이름 = 값 매우 간단하다 자료형은 숫자, bool, 문자열이 있다 a = 5 b = false c = "안녕" #작은 따옴표 또는 큰 따옴표로 감싸준다 문자열 간의 연산도 가능하다 a = "안녕" b = "하세요" a + b # "안녕하세요" 문자열 사용하기 인덱싱 a = "안녕하세요" a[0] # 안 a[1] # 녕 a[0:2] # 안녕 리스트는 순서가 있는 다른 자료형들의 모임 a = [1, 2, 3, 4, 5] b = [1, 2, 3, "안녕"..