목록❤︎❤︎ (59)
얼레벌레
백준 #18870 좌표압축 문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다. 제한 1 ≤ N ≤ 1,000,000 -109 ≤ Xi ≤ 109 예제 입력 1 복사 5 2 4 -10 4 -9 예제 출력 1 복사 2 3 0 3 1 예제 입력 2 복사 6..
자바스크립트에는 개발자가 직접적으로 접근하지 못하는, 엔진의 내부 조직인 내부 슬롯과 내부 메서드가 존재함 - 내부 슬롯과 내부 메서드는 이중 대괄호([[...]])로 감싸져 있는 것들에 해당함 - 간접적으로 일부는 접근 가능 (ex) [[prototype]] → __proto__로 접근 가능 프로퍼티 어트리뷰트 * js엔진은 프로퍼티 생성 시 프로퍼티 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동 정의 ✔️ 프러퍼티 상태 - 프로퍼티 값([[Value]]), 값의 갱신 가능 여부([[Writable]]), 열거 가능 여부([[Enumerable]]), 재정의 가능 여부([[Configurable]]) ⇨ Object.getOwnPropertyDescriptor(s)() : 프로퍼티 어트리뷰트를 ..
var 키워드로 선언한 변수는 여러 문제점이 존재함 - 변수 호이스팅에 의해 변수 선언문이 런타임 이전에 실행 - 변수 중복 선언 가능 - 함수 레벨 스코프 → let, const 키워드로 선언한 변수를 사용하기 let ▪️ 변수 중복 선언 금지 let foo=3; let foo=5; // SynataxError: Identifier has already been declared ▪️ 블록 레벨 스코프 - 함수뿐만 아니라 while문, for문, if문, try/catch문도 지역 스코프로 인정 ▪️ 변수 호이스팅 - let 키워드로 선언한 변수는 변수 호이스팅이 발생하지 않는 것처럼 보임 - var 키워드는 선언단계와 초기화단계가 동시에 일어나지만 let 키워드는 분리되어 진행됨 → 따라서, 초기화 단..

변수에는 생명주기(선언에 의해 할당된 후 소멸될 때까지의 기간)이 있음 - 생명주기동안 메모리 공간을 점유하게 됨 ▪️ 지역변수의 생명주기 - 변수 선언은 호이스팅에 의해 런타임 이전에 엔진에 의해 먼저 실행되는데, 이는 전역변수에 해당하는 말임 - 지역변수는 해당 지역변수가 선언된 함수 내부에서 호이스팅 발생! → 지역 변수의 생명주기 = 함수의 생명주기 - 호이스팅 : 변수 선언이 스코프의 선두로 끌어 올려진 것처럼 동작하는 js의 특징 ⇨ 호이스팅은 스코프 단위로 동작 ▪️ 전역변수의 생명주기 - 전역변수의 생명주기 = 전역 객체(globalThis)의 생명주기 - 전역변수의 문제점 ∙ 암묵적 결합 - 모든 코드가 전역변수를 참조하고 변경할 수 있게 됨 ∙ 긴 생명주기 - 메모리 리소스를 오랜시간 ..
스코프(유효범위) : 식별자가 유효한 범위 - 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙으로 스코프를 통해 어떤 변수를 참조할지 결정함 - 다른 스코프에선 같은 이름의 식별자를 사용가능케 함 → 스코프 = 네임스페이스 전역변수는 어디서든 참조할 수 있지만 지역변수는 자신의 지역 스코프와 하위 지역 스코프에서만 유효함 스코프 체인 : 스코프가 계층적으로 연결된 것 - 함수의 중첩에 의해 중첩 함수의 지역 스코프는 중첩 함수를 포함하는 외부 함수의 지역 스코프와 계층적 구조를 가짐 ✅ 변수를 참조할 때 자바스크립트 엔진은 스코프 체인을 통해 변수를 참조하는 코드의 스코프에서 시작해 상위 스코프 방향으로 이동하며 변수 검색 → 따라서, 상위 스코프에서 유효한 변수는 하위 스코프에서 참조할 수 있지만..