본문 바로가기

전체 글

(159)
[TypeScript] - 타입 호환 타입호환이란 ? 타입 호환이란 타입스크립트 코드에서 특정 타입이 다른 타입에 잘 맞는지를 의미한다. 구조적 타이핑 예시 구조적 타이핑이란 코드 구조 관점에서 타입이 서로 호환되는지의 여부를 판단하는 것이다. 위 코드에서 capt가 hero 타입에 호환될 수 있는 이유는 capt의 속성 중에 name이 있기 때문이다 Avengers인터페이스에서 name 속성을 갖고 있기 때문에 capt는 Avengers 타입에 호환될 수 있다. 함수를 호출할 때도 마찬가지이다 capt변수에 이미 name 속성 뿐만 아니라 location 속성도 있기 때문에 assemble 함수의 호출 인자로 넘길 수 있다. Soundness란 ? 타입스크립트는 컴파일 시점에 타입을 추론할 수 없는 특정 타입에 대해서 일단 안전하다고 보는..
[Javascript] - 프로토타입 상속 *프로토 타입 상속 - 사람에 관한 프로퍼티와 메서드를 가진 user라는 객체가 있는데 user와 상당히 유사하지만 약간의 차이가 있는 admin과 guest 객체를 만들어야 한다고 가정해보면 user의 메서드를 복사하거나 구현하지 않고 user에 기능을 얹어 admin과 guest객체를 만들고 싶을 때 자바스크립트 고유 기능인 프로토타입 상속을 이용할 수 있다 [Prototype] - 자바스크립트의 객체는 명세서에 명명한 [Prototype] 이라는 숨겨진 프로퍼티를 갖는다 이 숨김 프로퍼티의 값은 Null이거나 객체에 대한 참조가 되는데 다른 객체를 참조하는 경우 참조 대상은 프로토타입이라고 부른다. - 프로토타입의 동작 방식은 신비스러운 면이 있다 object에서 프로퍼트를 읽으려고 하는데 해당 프..
프로그래머스[LEVEL2] - 캐시(2018 카카오 블라인드 코딩테스트) https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 이 문제의 핵심 페이지 교체알고리즘인 LRU에 대해서 알아야 접근할 수 있는 문제이다 https://gomguard.tistory.com/115 페이지 교체 알고리즘 - LRU 페이지 교체 알고리즘 사회의 자원은 한정되어 있고 그 한정된 자원을 효율적으로 사용하기 위해 각종 법과 규칙이 존재합니다. 눈에 확연히 보이지 않아 무한할 것만 같은 컴퓨터 자원도 사실 gomguard.tisto..
[Javascript] - 원시 값과 객체의 비교 (모던 자바스크립트 Deep Dive) 원시 타입과 참조 타입 원시 타입 변경 불가능한 값 (Immutable Value). 변수에 할당 시 실제 값이 저장. 다른 변수에 할당 시 값이 복사되어 전달 (값에 의한 전달, Pass by Value). 참조 타입 변경 가능한 값 (Mutable Value). 변수에 할당 시 참조 값이 저장. 다른 변수에 할당 시 참조 값이 복사되어 전달 (참조에 의한 전달, Pass by Reference). 원시 값 한번 생성된 원시 값은 읽기 전용 (Read Only)으로 변경이 불가능. 값 자체를 변경 불가능한 것이지, 변수는 언제든지 재할당을 통해 변수를 교체할 수 있다. const와 같은 상수는 재할당 역시도 불가능하다. 원시 값 재할당 원시 값을 재할당하면 이전의 원시 값을 변경하는 것이 아니다. 새로..
알고리즘 - 유클리드 호제법 * 유클리드 호제법 2개의 자연수 또는 최대 공약수를 구하는 알고리즘의 하나이다 호제법이란 말은 두 수가 서로 상대방 수를 나누어 결국 원하는 수를 얻는 알고리즘을 나타낸다 2개의 자연수 a, b에 대해서 a 를 b 로 나눈 나머지는 r이라 한다면 a와 b의 최대 공약수는 b와 r의 채돼공약수와 같다 이 성질에 따라 b를 r로 나눈 나머지 r'을 구하고 다시 r을 r'로 나누는 과정을 반복하여 나머지가 0이되었을 때 나누는 수가 a와 b의 최대 공약수이다 자바스크립트에서의 유클리드 호제법 구현
[React] - ref 알아보기 리액트로 개발을 하다보면 돔 요소에 직접 접근해야 할 때가 있다 예를 들어 돔 요소에 포커스를 주거나 돔 요소의 크기나 스크롤 위치를 알고 싶은 경우이다 이때 ref속성값을 이용하면 자식 요소에 직접 접근할 수 있다 자식요소는 컴포넌트 일수도 있고 돔 요소일 수도 있다. useRef 훅이 반환하는 ref 객체를 이용해서 자식 요소에 접근할 수 있다.접근하고자 하는 자식 요소의 ref 속성값에 ref 객체를 입력한다 해당 돔 요소 혹은 컴포넌트가 생성되면 ref 객체로 접근할 수 있다. ref 객체의 current 속성을 이용하면 자식 요소에 접근할 수 있다. 위 코드에서는 useEffect 훅 내 부에서 자식 요소에 접근하고 있다 그 이유는 부수 효과 함수는 컴포넌트 렌더링 결과가 돔에 반영된 후에 호출..
백준 1406 - 에디터 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 문제 풀이 left, right 라는 배열을 만들어 스택으로 사용하였다 커서의 왼쪽은 left 배열에 오른쪽은 right 배열에 push한다 이해를 돕기 위해 첫번째 입력 예제를 예시로 들면 1 첫 for 문을 통해 abcd 를 left에다 차례대로 푸쉬한다 - > [ a, b, c, d] 2 다음 P x가 나왔으니 left에 x를 푸쉬한다 -> [a, b, c, d, x] 3 다음 L이 나왔으니 ..
[Javascript] - 전역 객체에서 var, let, const 전역 객체 - 전역 객체를 사용하면 어디서나 사용 가능한 변수나 함수를 만들 수 있다 전역 객체는 언어 자체나 호스트 환경에 기본 내장되어 있는 경우가 많다 - 브라우저 환경에선 전역 객체를 window , Node.js 환경에선 global이라고 부르는데 각 호스트 환경마다 부르는 이름이 다르다 위 예제처럼 전역 객체의 모든 프로퍼티를 접근할 수 있다. let const 가 아닌 var로 선언한 전역 함수나 전역 변수는 전역 객체의 프로퍼티가 된다 하위 호환성 때문에 이런 방식으로 전역 객체를 사용해도 동작은 하지만 이방법은 추천하지 안ㄶ는다 모듈을 사용하는 모던 자바스크립트는 이런 방식을 지원하지 않는다. var 대신 let 이나 const를 사용하면 var 를 사용할 때와 달리 전역 객체를 통한 변..