2022/08(22)
-
[JS] 클래스
클래스 자바스크립트에는 '상속'이라는 개념이 존재하지 않습니다. 특히 프로토타입 기반과 클래스 기반의 언어는 서로 다른 구조를 갖고 있기 때문에 이를 클래스처럼 동작하려는 시도가 있었고 결국 ES6에는 클래스 문법이 추가가 되었습니다. 클래스의 개념 사물의 공통 속성을 모아 놓은 집단을 클래스라는 추상적인 개념으로 나타냅니다. 그리고 그 클래스 간 포함 관계를 가지며 분류되며 상위 클래스, 하위 클래스로 표현이 됩니다. 하지만 이들은 추상적인 개념이고 이를 바탕으로 구체화, 실존하는 개체를 인스턴스라고 합니다. "사람"을 떠올리면 두 발, 두 손, 얼굴 등등 여러 요소를 갖고 있는 모습을 연상할 수 있습니다. 하지만 그저 사람이라고 생각하면 정확하지 않고 모호합니다. 여기서 실존 인물인 "톰 크루..
2022.08.11 -
[프로그래머스/python] 후보키
후보키 2019 KAKAO BLIND RECRUITMENT 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 조합과 집합을 사용하여 풀이를 진행했습니다. 이 문제를 들었던 생각은 유일성과 최소성을 잘 구현하면 되겠다고 생각했습니다. combinations 사용해서 후보키의 길이를 1부터 n열까지 올리면서 조합을 구했습니다. 조합의 값을 통해서 각 열에 있는 값들을 종합하여 겹치는 값이 있는지 집합을 썼습니다. 그럼 이제 유일성은 해결했습니다. 최소성의 경우 유일성에서 통과한 후보키 값을 n길이 조합이 유일성 검사하기 전에 체크합니다...
2022.08.10 -
[프로그래머스/python] 자물쇠와 열쇠
자물쇠와 열쇠 2020 KAKAO BLIND RECRUITMENT 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 key의 돌기 부분을 lock 홈에 하나 씩 맞춰보고 맞지 않다면 90도 회전하면서 풀었습니다. key의 돌기를 따로 배열에 빼놓고 lock 홈을 따로 배열로 빼놨습니다. key의 돌기 중 한 개를 선택해서 lock 홈에 맞춰봅니다. 여기서 맞춰볼 때 key 돌기 배열 안의 요소는 전부 이동합니다. ( 돌기와 홈의 거리 만큼!) 맞춰볼 때 lock의 범위를 넘어가는 key의 돌기는 제외했습니다. 딱 맞는다면 lock과 ke..
2022.08.10 -
[프로그래머스/python] 순위 검색
순위 검색 2021 KAKAO BLIND RECRUITMENT 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 해시맵과 이진탐색을 사용하여 풀이를 진행했습니다. 사실 처음에 풀 때 해시맵이 뭔지도 모르고 풀었기 때문에 한참 걸리고 틀리고 힌트를 얻어가며 풀어갔습니다. 문제 해결과정이 꽤 복잡했습니다. 일반배열로 풀고 "시간초과", 집합으로 풀고 시간을 절반 줄였으나 "시간초과", 쿼리 순환 밖에서 정렬해봤는데 "시간초과" 당했습니다. 문제를 보니 info 배열의 크기는 1 이상 50,000 이하입니다. 그렇다면 이중for문은 포기하고 ..
2022.08.10 -
[JS] 프로토타입
프로토타입 자바스크립트는 프로토타입 기반 언어입니다. 클래스 기반 언어는 '상속'을 사용하지만 프로토타입 기반 언어는 어떤 객체를 원형을 삼고 이를 복제함으로써 상속과 비슷한 효과를 냅니다. var instance = new Constructor(); new연산자와 생성자 함수를 호출하면 생성자 함수(Constructor)에 정의된 내용을 바탕으로 인스턴스가 생성됩니다. 인스턴스에는 __proto__라는 프로퍼티가 자동으로 부여됩니다. __proto__는 생성자 함수(Constructor)의 prototype()이라는 프로퍼티를 참조합니다. __proto__ 와 prototype 은 프로토타입의 핵심 개념입니다. prototype 객체 내부에는 인스턴스가 사용할 메서드를 저장하며 인스턴스가 __pro..
2022.08.08 -
[JS] 클로저
클로저 MDN에서는 클로저를 "함수와 그 함수가 선언될 당시의 Lexical environment의 상호관계에 따른 현상"으로 말하고 있습니다. Lexical environment에 대해서 복습하자면 LexicalEnvironment는 "환경레코드", "outerEnvironmentReference"로 이루어져 있으며 outerEnvironmentReference는 함수가 선언될 당시의 LexicalEnvironment를 참조하면서 스코프 체인이 일어나게 되고 식별자의 유효 범위가 늘어납니다. 예로 들면 함수 A와 A의 내부함수 B가 있다면, 내부함수 B의 outerEnvironmentReference 에는 함수 A의 LexicalEnvironment에 접근을 하는 겁니다. 그렇다면 함수 A에서 ..
2022.08.07