전체 글 56

💡 클로져

✔️ 렉시컬 스코프 ‘’자바스크립트 엔진은 함수를 어디서 호출했는지가 아닌, 함수를 어디서 정의했는지에 따라서 상위 스코프 참조를 결정한다’’ 함수의 상위 스코프는 함수가 정의된 위치에서 결정되고, 변하지 않는다(정적 스코프) 실행 컨텍스트 개념을 적용시켜 보면 함수가 호출되어 실행 컨텍스트가 생성되고, 그 함수 렉시컬 환경의 외부 렉시컬 환경에 할당할 참조값을 결정한다는 것과 같은 의미이다. 이 참조값은 함수가 평가되는 시점에서 함수의 위치(환경)에 따라 결정된다, 이것이 렉시컬 스코프 ✔️ 자바스크립트 함수 내부 슬롯 [[Environment]] 렉시컬 스코프가 가능하려면, 함수가 호출되는 위치와 상관없이 상위 스코프에 대한 참조값을 기억하고 있어야 한다. "함수 객체 내부슬롯 [[Environmen..

javascript/DeepDive 2023.02.01

백준 1092 배

https://www.acmicpc.net/problem/1092 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 📌 해결과정 주어진 시간 1에 가능한 많은 크레인을 사용할 수 있도록 해야, 시간을 최소로 사용할 수 있다. 📌 코드 1. 3중 반복문 import sys input = sys.stdin.readline n = int(input()) crane_list = list(map(int, input().split())) m = int(input()) box_list = list(map(i..

카테고리 없음 2022.12.24

백준 2141 우체국

https://www.acmicpc.net/problem/2141 2141번: 우체국 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 X[1], A[1], X[2], A[2], …, X[N], A[N]이 주어진다. 범위는 |X[i]| ≤ 1,000,000,000, 0 ≤ A[i] ≤ 1,000,000,000 이며 모든 입력은 정수이다. www.acmicpc.net 📌 해결 과정 우체국은 마을에 설치 하는 것이고, 우체국과 각 마을까지의 거리가 아니라 각 마을에 사는 사람들과의 거리 합을 기준으로 설치 할 위치를 정해야함에 유의해야 한다. 따라서, 설치 할 위치에 영향을 주는 것이 거리가 아닌 사람 수 임을 알 수 있다. 핵심은, 현재 마을의 양 옆에 마을 사람들의 수가 가장 ..

카테고리 없음 2022.12.24

백준 2636 치즈

https://www.acmicpc.net/problem/2636 2636번: 치즈 첫째 줄에는 사각형 모양 판의 세로와 가로의 길이가 양의 정수로 주어진다. 세로와 가로의 길이는 최대 100이다. 판의 각 가로줄의 모양이 윗 줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진 www.acmicpc.net 📌 해결과정 정말 삽질을 길게 했던 문제다,, 우선 탐색을 하기 전 구멍이 뚫린 영역을 찾아서 그 영역을 2로 바꾼다. 그 다음 탐색을 하는 과정에서 4방향 중에 공기와 닿는 치즈가 있으면, 즉 4방향 중에 0인 좌표가 있으면 녹이려고 했다. 하지만 이 과정은 문제가 많다. 구멍을 뚫린 영역만 찾아서 2로 바꾸는게 정말 쉽지 않다. 그래프의 각 좌표를 방문 하다가, 값이 1인 좌표를 만난다 -> 방문해서 ..

백준 2792 보석상자

https://www.acmicpc.net/problem/2792 2792번: 보석 상자 보석 공장에서 보석 상자를 유치원에 기증했다. 각각의 보석은 M가지 서로 다른 색상 중 한 색상이다. 원장 선생님은 모든 보석을 N명의 학생들에게 나누어 주려고 한다. 이때, 보석을 받지 못하 www.acmicpc.net 📌 해결과정 우선 문제를 읽고 문제를 풀기위해 필요한 조건들을 정리했다. 학생들의 질투심을 최소화 한다 = 한 학생이 갖는 같은 색상의 보석의 갯수를 최소화 한다 1. 모든 보석을 남김없이 학생들에게 나누어 줘야한다. 2. 한 학생은 같은 색상의 보석만 가질 수 있다. 3. 보석을 갖지 못하는 학생이 있을 수 있다. 어떻게 풀어야 할지 감을 잡지 못하다가 두번 째 예시를 통해서 힌트를 얻고 풀었다...

[Js 딥다이브] 17. 생성자 함수에 의한 객체 생성

Js 에서 객체를 생성하는 방법은 여러가지가 있다. 객체는 프로퍼티를 사용해서 객체의 상태를 표현하고, 객체의 메서드를 활용해서 프로퍼티를 참조하거나 프로퍼티 상태를 변경한다. 리터럴로 생성하는 방법은 간단하고 직관적이라는 장점이 있지만, 동일한 프로퍼티를 갖는 객체를 여러개 생성해야 하는 경우, 같은 코드를 반복적으로 써야 하므로 굉장히 비효율적이다. 이를 해결할 수 있는 생성자 함수로 객체를 생성하는 방법을 알아보자! 1. new 연산자 + Object 생성자 함수 const my_obj = new Object(); my_obj.Id = 'woong'; console.log(my_obj); // {Id : woong} 🧐 생성자 함수? new 연산자와 함께 호출하여 객체를 생성하는 함수를 뜻한다 꼭 ..

카테고리 없음 2022.11.20

[Js 딥다이브] 15. let, const

📌 var 키워드의 단점 1. 변수의 중복 선언 허용 var x = 10; console.log(x); var x = 20; console.log(x); 이미 선언되고 초기화까지 완료된 변수 x 의 중복선언을 허용한다. 전역변수가 의도치않게 값이 변경되면 에러를 발생시킬 가능성이 매우 높다. 2. 함수 레벨 스코프 var x = 1; if(true){ var x = 10; } console.log(x); 함수 레벨 스코프에서 선언한 변수가 아니면, 스코프를 생성하지 않고 전역변수로 취급한다. 이 문제 역시 의도치 않게 변수 값을 변경시킨다. 3. 호이스팅 console.log(x); var x = 1; 런타임 이전 자바스크립트 엔진에 의해서 선언문이 제일 선두로 끌어 올려지고 undefined 로 초기화..

javascript/DeepDive 2022.11.14

[Js 딥다이브] 14. 전역변수의 문제점

변수는 유효범위(스코프)와 생명주기를 가진다. 📌 변수의 생명주기 변수는 선언에 의해서 생성되고 할당에 의해서 값을 가진다. 식별자(변수) 는 값이 저장된 메모리 주소를 식별한다. 만약 변수에 생명주기가 없다면 프로그램이 종료되기 까지 계속 메모리 공간을 사용하게 되고 이 변수가 사용되지 않는다면 메모리 공간을 낭비하게 된다. 변수는 자신이 선언된 위치(스코프)에서 생성되고 자신이 선언된 위치에서 소멸된다. 1️⃣ 지역변수 var sentence = "this is global variable"; function foo(){ var x = 10; console.log(sentence); // ? var sentence = "this is global variable"; return x; } foo(); ..

javascript/DeepDive 2022.11.10

[Js 딥다이브] 13. 스코프

1. 스코프 ? 자바스크립트의 스코프는 다른 언어들과 구별되는 특징이 있다. var, let, const 키워드로 선언한 변수들의 스코프는 각각 다르게 동작한다. // 매개변수로 정의한 x, y 는 함수 내부에서만 참조할 수 있다. // 매개변수의 스코프는 함수 내부이다. function add(x, y){ return x + y; } console.log(add(2, 4)); // 6 console.log(x, y); // ReferenceError : x is not defined. 변수는 선언된 위치에 의해서 유효 범위가 결정된다. 유효 범위란, 다른 곳에서 쓰인 코드가 선언한 변수를 참조할 수 있는 범위를 말한다. 스코프는 변수의 유효한 범위를 말하는 것이다. 즉, 선언된 변수가 어디까지 참조될 ..

javascript/DeepDive 2022.11.07

[git] 2. GUI 환경에서 txt 파일 버전관리 해보기 - sourcetree

📌 소스트리로 버전 관리 해보기 이번에는 CLI 환경이 아닌 직접 커밋, 푸쉬의 상태를 눈으로 더 쉽게 확인할 수 있고, 클릭을 통해서 파일의 버전을 관리해볼 수 있는 소스트리를 이용해서 버전관리를 해보자 소스트리는 Git 사용을 더욱 쉽게 도와주는 GUI 프로그램이다. https://minjyuus.tistory.com/9 [Sourcetree] Mac 소스트리 설치 및 사용법 소스트리는 Git을 관리하기 위한 GUI 프로그램이다. 즉, CLI처럼 명령어로 깃에 코드를 커밋, 수정, 삭제하는 것이 아니라 '클릭'으로 깃 사용이 가능하다. 아직 명령어가 미숙한 나는 프로젝트를 minjyuus.tistory.com https://es1015.tistory.com/408 [MAC] 소스트리 Github 간단..

git 2022.11.06