실행컨텍스트와 렉시컬 환경 실행 컨텍스트(Execution Context)와 렉시컬 환경(Lexical Environment)은 자바스크립트 엔진이 코드를 실행하는 방법을 이해하는 데 중요한 개념입니다. 실행 컨텍스트 : 현재 실행되는 코드의 환경을 나타내며, 전역코드가 실행되는 전역컨텍스트 함수 내부 코드가 실행되는 함수 컨텍스트로 나뉠 수 있습니다. 전역 컨텍스트 전역 컨텍스트는 코드가 실행되는 동안 계속 유지되며, 코드 실행이 종료될 때까지 사라지지 않습니다. 전역 변수와 함수를 포함 함수 컨텍스트 함수 컨텍스트는 각각의 함수 호출에 대해 별도로 생성되며, 함수가 실행을 완료하고 반환하면, 해당 함수 컨텍스트는 메모리에서 제거됩니다(단, 클로저에 의해 참조되는 경우는 제외). 함수의 매개변수, 로컬..
호이스팅 : (변수, 함수) 선언부가 코드 최상단으로 이동해 실행되는 것처럼 동작하는 자바스크립트의 독특한 동작 방식으로, 자바스크립트 엔진이 코드를 해석하고 실행하기 전(런타임 이전)에 선언된 변수와 함수를 미리 메모리에 할당하는 과정을 말합니다. 호이스팅에는 크게 두 가지 방식이 존재하는데요, 변수 호이스팅 함수 호이스팅 변수 호이스팅 var 키워드로 선언된 변수의 경우 호이스팅에 의해 undefined로 초기화되므로, 선언문 이전 undefined 참조가 가능합니다. let, const 키워드로 선언한 변수도 엄밀히는 호이스팅이 일어나지만, 변수 선언 전에 해당 변수를 참조하려 했을 때, 참조에러가 발생합니다. 함수 호이스팅 function 키워드의 함수선언문으로 선언한 함수는 호이스팅에 의해 코드..
데이터타입 자바스크립트에는 원시형과 객체형 이라는 데이터 타입의 두 가지 범주가 존재합니다. 원시 타입 변수 할당 시점에 메모리 영역을 차지하고 저장되기 때문에 불변 형태의 값으로 저장된다. (boolean, number, string, null, undefined, Symbol, Bigint) 객체 타입 반면 객체는 언제나 프로퍼티를 삭제, 추가, 수정할 수 있기 때문에 원시형과 달리 변경 가능한 형태로 저장되며, 참조 주소값을 변수에 할당받는다. (배열, 함수 , 정규식, 클래스 등.. ) 이러한 특성에 의해 객체타입의 경우 내부 프로퍼티가 변경 되더라도 기존의 참조주소를 유지하므로 서로 다른객체로 판단하지 않게됩니다. 그렇다면 자바스크립트는 자료형의 비교를 정확히 어떻게 수행할까요? JS의 동등성 ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/81301?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 1. alphabet과 숫자를 1:1 매칭시킨 검색 테이블을 만들어준다. 2. 이 테이블에서 keys() 배열을 뽑아 forEach로 순회작업을 진행해주며 3. values()로 뽑은 숫자목록을 forEach문의 idx로 접근하여 문자열 replace를 진행해준다. 문자열 변수를 이용해야 하므로 const re = /ab+c/i; // litera..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/118669 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 우선순위 큐를 활용한 다익스트라 알고리즘으로 풀이 + Greedy [그리디 알고리즘을 위한 아이디어 도출해내기] : 가장 그럴듯 한 해를 구하는 것으로 최적해를 구할 수 있는 경우 출발점에서 산봉우리를 올라갔다가 다시 돌아오는 것까지 고려하는 것은 복잡함, -> 특정 산봉우리까지 편도 코스의 intensity(간선 최대값)를 우선순위 큐에 추가하는 것만으로도 정답도출 가능 -> w..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 제약조건 q1,q2 길이 ≤ 30만 O(n^2)의 알고리즘은 시간 초과임을 의미 O(10^8) 이하의 알고리즘 채택 필요 → O(nlogn),O(n) q1,q2 의 원소 ≤ 10^9 int자료형은 일반적으로 2^31 = 2*10^9 까지 표현 가능 (int: 4byte) q1,q2의 요소가 int임을 의미 문제유형 투포인터 + 그리디 큐는 눈속임 →큐를 합쳐서 투 포인터 로 접근 두 ..