목록전체 글 (118)
all is well!!
😇 문제 🙏 답 function solution(nums) { let numA = new Set(nums); let newNums = new Set(); for(let elem of nums){ newNums.add(elem) } let length = Array.from(newNums).length; let halfOfNums = nums.length/2; if(length>halfOfNums){ return halfOfNums; } else return length; console.log(length) console.log(Array.from(length).length) console.log(nums.length/2) } 오늘 공부하고 정리한 집합 알고리즘을 이용하는 유명한(?) 문제라고 해서 도전했..
👀 집합? 1. 항목이 유일한지 확인할때 필요한 강력한 자료 구조중 하나. 3. 유한하고 구분되는 객체들의 그룹.(정렬되지 않고 중복되지 않는 항목들의 그룹). 4. 집합은 해시 테이블의 구현을 기초로 하기때문에 O(1)상수 시간에 유일한 항목을 확인하고 추가할 수 있다. 🟣 배열과 어떻게 다른가요? 1. 배열은 각 요소가 정수 인덱스를 가지고 있기때문에 순서가 유지되고 중복된 값을 포함할 수 있는 자료 구조 2. Set 객체는 중복되지 않은 고유한 값을 저장하기 때문에 순서가 중요하지 않고 중복된 값은 허용하지 않는다. 👀 JS의 Set 객체 js에서는 set(집합)을 기본 지원한다. var exampleSet = new Set(); 기본 set 객체에는 집합 내 항목들의 현재 개수를 나타내..
👀 일급 객체의 조건 1. 런타임에 생성이 가능한 객체 2. 변수나 자료구조에 저장할 수 있는 객체 3. 함수의 매개변수에 전달할 수 있는 객체 4. 함수의 반환값으로 사용할 수 있는 객체 JS는 이 4가지를 모두 만족하기 때문에 일급객체! 👀 일급 객체의 특징 1. 함수가 일급 객체라는것은 함수를 객체와 동일하게 사용할 수 있다는 것. 2. 그래서 객체는 값이기 때문에 함수는 값과 동일하게 취급된다. 3. 함수는 값을 사용할 수 있는 곳이라면 어디든 리터럴로 정의할 수 있고 런타임에 함수 객체로 평가된다. 4. 함수의 매개변수에 전달할 수 있고 함수의 반환값으로도 사용할 수 있다. 5. 일반 객체와의 다른 점은 함수 객체는 호출이 가능하다. 6. 그래서 함수 객체는 함수 고유의 프로퍼티를 소..
👀 var 키워드로 선언한 변수의 문제점 ES6 이전까지는 변수 선언은 var 키워드만 사용했다. 🟣 변수 중복 선언 허용 1. var 키워드로 선언한 변수를 중복 선언하면 초기화문 유무에 따라 다르게 동작. 2. 초기화문이 있는 변수 선언문은 JS엔진에 의해 var 키워드가 없는것처럼 동작. 3. 초기화문이 없는 변수 선언문은 에러는 발생하지 않지만 무시된다. 4. 변수를 중복 선언하면서 값까지 할당하면 의도치 않게 먼저 선언된 변수 값이 변경되는 부작용이 있다. 🟣 함수 레벨 스코프 1. var 키워드의 변수는 오로지 함수의 코드 블록만 지역 스코프로 인정한다. 2. 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 된다. var x = 1; if(true..
👀 변수의 생명 주기 🟣 지역 변수의 생명 주기 1. 변수는 선언에 의해 생성되고 할당을 통해 값을 갖고 언젠가 소멸하는 생명주기를 가지고 있다. 2. 변수는 자신이 선언된 위치에서 생성되고 소멸한다. 4. 지역변수의 생명 주기 = 함수의 생명주기 🟣 전역 변수의 생명 주기 1. 전역 코드는 명시적인 호출 없이 실행된다. 2. 전역 코드에는 반환문을 사용할 수 없어서 마지막 문이 실행되서 더이상 실행될 문이 없을때 종료된다. 3. 전역변수의 생명 주기 = 애플리케이션의 생명 주기 4. var 키워드로 선언한 전역 변수의 생명주기는 전역 객체의 생명 주기와 일치. 👀 전역 변수의 문제점 1. 암묵적 결합 전역 변수의 선언한 의도는 모든 코드가 전역 변수를 참조하고 변경할 수 있는 암묵적 결합을 허용..