개인공부/TIL(Today I Learned) 95

TIL 52일차_알고리즘: 탐욕알고리즘과 동적계획법

알고리즘 ... 😭 하루이틀만에 머릿속에 너무많이 입력한 것 같다... 정리하자. 탐욕 알고리즘 (Greedy Algorithm) 여러 경우 중, 그 '순간' 에 최적이라고 생각하는 것을 선택해 나가는 방식. '순간'이라고 정의하는 선택은 Local하게는 최적이지만, 그 선택이 계속되어 Global하게 해답을 만들었을 때, 그것이 최적이라는 보장은 없다. Greedy Algorithm이 최적의 결과를 보장하기위해서는, Greedy Choice Property 와 Optimal substructure라는 두 가지 속성을 만족해야한다. Greedy Choice Property : subproblem의 해답이 다음 subproblem에 영향이 가지 않는다는 독립적인 연산 속성 Op..

TIL 51일차_알고리즘: 유클리드 호제법

호제법(互除法)이라는 말은 서로(互) 나누기(除) 때문에 붙여진 이름이다. 이 뜻의 '호제' 라는 단어가 따로 있지는 않다. 이 알고리즘은 유클리드의 원론에 적혀있는 내용으로, 인류 최초의 알고리즘이라 한다. 유클리드 호제법 개념 알고리즘의 골자는 다음과 같다. 두 양의 정수 a, b (a>b)에 대하여 a = bq + r (0

TIL 50일차_시간복잡도(Time Complexity)

시간복잡도 란? 시간복잡도를 한문장으로 정리하면 "입력값이 커짐에 다라 증가하는 시간의 비율" 이라고 할 수 있다. 이 시간 복잡도를 표기하는 방법은 여러가지가 있지만, Big-O 표기법 (빅오표기법) 이 가장 흔하게 사용된다. Big-O표기법은 최악의 경우 입력값이 증가함에 따라 시간복잡도가 얼마나 증가하는지 표기하는 방법이다. Big-O 표기법의 종류 아래는 빠른 시간복잡도 순으로 나열한 것이다. O(1) - O(logn) - O(n) - O(nlogn) - O(n^2) - O(2^n) - O(n!) 빅오표기법을 표기할 때는, 계수나 정수값들은 생략한다. 예를 들어, 입력값이 1 증가할때마다 코드의 실행시간이 2초씩 증가한다고 하면, '이 알고리즘은 O(2n) 이구나!' 라고 생각할 수..

TIL 49일차_Set 객체

Set객체에 대해 처음알았다!🤩 Set객체는 유일한 값을 저장하는 객체이다. 즉, 하나의 Set 내부의 어떠한 값이든 그 Set 콜렉션 내에서 유일한 값이다. 또한, Set은 객체이지만 키를 갖지 않는다. 요소값만을 갖는다!! Set 객체를 배열로 변환하는 3가지 방법 Array.from() const set = new Set([1, 2, 3]); const arr = Array.from(set); Spread Syntax const set = new Set([1, 2, 3]); const arr = [...set] forEach const set = new Set([1, 2, 3]); const arr = []; set.forEach((element) => { arr.push(element); }) S..

TIL 48일차_forEach메소드와 루프제어문

배열의 모든 요소를 함수에 입력하여 가공할 때 쓰는 forEach 메소드! 오늘 forEach메소드를 쓰다가 예외처리를 해줘야했는데 어떻게 처리해야할지 고민했다. 나는 forEach 메소드는 for루프안에서 각 요소를 함수에 넣어 실행시킨다고 생각했기때문에, for문의 continue를 써야할지, 함수의 return으로 함수를 중단시켜야할지 고민했는데, 결론부터 말하면 return을 쓰면 된다! forEach 메소드 내부에서의 예외처리 생각해보면 쉬운문제다.😋 forEach는 이미 내장되어있는 함수이고, 우리가 사용할 때 조작하는 내용은, 콜백함수안의 내용이다. 따라서 함수에 예외처리를 할때와 마찬가지로, return을 사용해주면 된다. let array = [1,2,3,4]; array.forEach(..

TIL 47일차_자료구조: 그래프와 트리

흔히 자료구조 중 스택,큐,그래프,트리 이 4가지가 가장 기본이 되고, 각종 테스트나 입사 면접문제로도 자주 출제된다. 왜냐? 중요하니까! 이들이 중요한 이유는 현실의 대다수, 또는 모든 것을 표현하는 개념이기 때문이다. 오늘은 그래프와 트리에 대해서 알아보자. 그래프와 트리? 그래프 그래프는 개체간의 "관계" 를 다룬다. 현실에서도 수많은 개체가 상호작용하는데 이들이 연결되어 있을 때, 이 개체의 노드를 엣지로 이을 수 있고, 이것이 곧 그래프이다. 트리 트리는 계층을 표현한다. 정점인 루트노드부터 시작해서 말단인 리프노드까지 분기한다. 그래프와 트리 그래프와 트리는 분명 비슷하다. 왜냐하면, 트리의 부모노드와 자식노드의 계층관계도, 결국 그래프에서 말하는 "관계" 라고 할 수 있기 때문이다. 그렇다면..