전체 글
-
[Javascript] 3. 함수JS 2021. 4. 22. 22:47
✔︎ 정의하기 🚀 함수 선언문 : function (x) { return x + 1; } 🚀 함수 리터럴 : var add = function (x) { return x + 1 }; 🚀 함수 생성자 : var add = new Function( 'x', ' return x + 1 ' ) 🚀 화살표 함수 : var add = (x) => x + 1 ( ES6 추가 ) ✔︎ 호이스팅 이전 포스트에서 다룬 것과 같이 함수 선언문의 경우에도 호이스팅이 진행됩니다. 함수 선언문의 경우 라이프사이클의 선언 => 초기화 => 할당 모두가 한번에 이루어져 첫머리에 선언된 것 처럼 사용할 수 있습니다. ✔︎ 유효범위 (스코프) 유효범위란 변수에 접근 할 수 있는 범위를 말합니다. 유효범위는 어휘적 범위(Lexical S..
-
[Javascript] 2. 변수 및 개체JS 2021. 4. 22. 21:56
✔︎ 동적 변수 타입 첫번째 포스트에서 자바스크립트는 동적 타입 언어의 특징을 가진다고 하였습니다. 즉, 변수의 타입을 동적으로 지정할 수 있는 언어입니다. ✔︎ 변수 선언자 var 선언자의 특징은 재선언, 재할당 모두 가능하단 겁니다. 반대로 ES6에서 추가된 let, const 선언자는 재선언이 불가능하며, const의 경우에는 재할당도 불가능한 상수 값을 저장합니다. 스코프 및 전역개체 프로퍼티는 나중에 다루도록 하겠습니다. 우선 참고바랍니다. var let const 재선언 ⭕️ ❌ ❌ 재할당 ⭕️ ⭕️ ❌ 스코프 함수 블록 블록 전역개체 프로퍼티 Window - - ✔︎ 호이스팅 전역이나 새로운 유효범위에 접근 시, 해당 유효범위 내 선언된 변수 및 함수식들이 유효범위 중간에 선언되었다 하더라도..
-
[Javascript] 1. 언어적 특징JS 2021. 4. 22. 21:16
이전에 노트에 정리한 내용을 블로그에 한번 더 정리해서 게시하려합니다. 대부분의 내용은 이소 히로시 님의 모던 자바스크립트를 기반에 제가 학습한 내용을 살로 붙여서 구성되어 있습니다. 틀린내용이 있다면 연락부탁드립니다~~ ✔︎ 인터프리트 언어 자바스크립트는 인터프리트 언어입니다. 즉, 프로그램 소스를 한줄씩 기계어로 번역해서 실행하는 프로그래밍 언어 입니다. [ 장점 ] 별도의 빌드 없이 프로그램을 바로 실행 할 수 있음 [ 단점 ] 컴파일 언어보단 느림 => 컴파일 언어는 소스 코드를 모아서 기계어로 변환 후 실행하여 빌드과정 자체는 시간소요가 있으나, 런타임 환경에서는 이미 기계어로 변환되어 있어 속도가 빠름니다. 브라우저에 Just In Time 컴파일러가 내장되어 위의 단점을 최대한 커버 ✔︎ 동..
-
[Javascript] 5. 프로토타입JS 2021. 4. 22. 21:02
자바스크립트를 접해보셨다면 한번쯤은 들어보셨을 프로토 타입에 대해서 알아보려고 합니다. ✔︎ 자바스크립트는 프로토타입 기반의 OOP를 지원 일반적으로 알고있는 OOP의 클래스와 비슷한 역할을 담당 OOP의 기본적인 특성 중 하나인 상속을 지원 ✔︎ 프로토타입 객체? 프로토타입 프로퍼티? __proto__? 갑자기 비슷한 이름의 개념들이 튀어나오면서 많은 분들이 어려움을 겪고 있으실 겁니다. 🚀 프로토타입 객체 : 함수 생성할 때 자신을 통해 만들어질 개체의 원형 🚀 prototype property : 함수 개체에서 프로토 타입 개체와 연결된 속성 🚀 __proto__ ( 내부 프로퍼티 ) : 자신을 만들어낸 프로토타입 개체의 원형과 연결된 속성 아래의 예제에서 보시는바와 같이 함수 개체를 통해 생성한 ..
-
[leetcode] 841. Keys and Rooms알고리즘 2021. 4. 18. 11:58
class Solution { public: bool DFS(vector& rooms, vector& visited, int now, int& chked){ bool ret = false; if(visited[now]){ return ret; } if(chked == rooms.size() - 1) return !ret; visited[now] = 1; chked++; for(int i:rooms[now]){ ret = ret | DFS(rooms, visited, i, chked); } return ret; } bool canVisitAllRooms(vector& rooms) { vector visited(rooms.size(), 0); int chked = 0; return DFS(rooms, vis..
-
[leetcode] 1267. Count Servers that Communicate알고리즘 2021. 4. 17. 14:17
class Solution { public: int mvI[4] = {0,0,-1,1}; int mvJ[4] = {1,-1,0,0}; int DFS(int i, int j, vector& grid, vector& visited){ int ret = 1; if(visited[i][j]) return 0; visited[i][j] = true; bool goFlag = false; for(int k=0; k= grid[0].size()) continue; if(!grid[newI][newJ]) continue; goFlag = true; ret += DFS(newI, newJ, grid, visited); } } return goFlag ? ret : 0; } int countServers(vector& g..
-
[leetcode] 1557. Minimum Number of Vertices to Reach All Nodes알고리즘 2021. 4. 17. 13:32
leetcode 답게 문제에서 요구하는 바는 간단했습니다. DAG가 주어졌을떄, 각 노드에서 경로를 따라 도달할 수 있는 노드들의 리스트를 구하고 이렇게 구한 리스트들을 최소한으로 조합하여 모든 노드들을 커버하는 케이스를 구하라는 것이다., 음,, 우선 각 노드에서 도달할 수 있는 노드들의 리스트를 구해야 했으니 플로이드 와셜 알고리즘이 떠올랐다. 떠오르자 마자 해당 알고리즘을 쓰면 소스가 무지하게 더럽게 나올 것 같단걸 예상했지만 우선 시도해보았습니다., 역시 더럽더군요,,, 중간에 포기하고 새로운 아이디어를 생각해보다가 그냥 단순히 들어오는 경로가 없는 노드들을 출력하면 되는 거였더군요 어차피 들어오는 경로가 없는 노드들은 필연적으로 답에 포함되는 노드들이기 때문에 들어오는 경로가 없는 노드들만을 조..
-
[leetcode] 581. Shortest Unsorted Continuous Subarray알고리즘 2021. 4. 16. 10:17
배열이 주어졌을때 어느영역만큼을 정렬하면 전체가 정렬된 상태일지 출력하는 문제이다. 가장 간단한 방식으로 접근해보면, 기존의 배열과 정렬된 배열을 양끝의 인덱스부터 비교하면서 서로 틀어지는 부분의 영역을 출력해주면 정답이 된다. 시간복잡도는 정력작업으로 인해 O(nlogn)이라서 수행속도를 보면 별로 빠르지 않다. class Solution { public: int findUnsortedSubarray(vector& nums) { if(nums.size() == 1) return 0; vector numsCpy = nums; sort(numsCpy.begin(), numsCpy.end()); int left = 0; int right = nums.size() - 1; while(left < right){..