전체 글 70

[TS] 6. 타입추론, 타입단언, 타입가드, 타입호환, 타입모듈화

타입 추론(Type Inference) 변수를 선언하거나 초기화할 때 타입이 추론된다. 이외에도 변수, 속성, 인자의 기본 값, 함수의 반환 값 등을 설정할 때 타입 추론이 일어난다. // 타입 추론 기본 1 var a = 'abc'; function getB(b = 10){ var c = 'hi'; return b + c; } 10 + '10' // 1010 // 타입 추론 기본 2 interface Dropdown { value: T; title: string; } var shoppingItem: Dropdown = { value: 'abc', title: 'hello' } // 타입 추론 기본 3 interface Dropdown { value: T; title: string; } interface..

JSTS 2022.07.14

[TS] 전화번호부 조회 실습

interface PhoneNumberDictionary { [phone: string]: { num: number; }; } interface Contact { name: string; address: string; phones: PhoneNumberDictionary; } enum PhoneType { Home = 'home', Office = 'office', Studio = 'studio' } // api // TODO: 아래 함수의 반환 타입을 지정해보세요. function fetchContacts(): Promise { // TODO: 아래 변수의 타입을 지정해보세요. const contacts: Contact[] = [ { name: "Tony", address: "Malibu", phone..

JSTS 2022.07.11

[TS] 5. 제네릭

제네릭(Generics) 제네릭은 재사용성이 높은 컴포넌트를 만들 때 자주 활용되는 특징이다. 특히 한가지 타입보다 여러 가지 타입에서 동작하는 컴포넌트를 생성하는데 사용된다. 제네릭은 타입을 마치 함수의 파라미터의 개념으로 사용한다. 제네릭의 기본 문법 function logText(text: T):T{ console.log(text); return text; } logText('하이'); 기존 타입 정의 방식과 제네릭의 차이점 함수 중복 선언의 단점 function logText(text: string) { console.log(text); return text; } function logNumber(num: number) { console.log(num); return num; } logText('..

JSTS 2022.07.07

[TS] 4. 이넘, 클래스

이넘 이넘(Enums)은 특정 값들의 집합을 의미하는 자료형이다. 숫자형 이넘 별도의 이넘 형식을 지정해주지 않으면 숫자형 이넘으로 설정된다. 처음 값을 0 기준 1씩 증가하는 값으로 초기화돼 있다. enum Shoes { Nike, Adidas } var myShoes = Shoes.Nike console.log(myShoes); // 0 문자형 이넘 enum Shoes { Nike = '나이키', Adidas = '아디다스' } var myShoes = Shoes.Nike console.log(myShoes); // '나이키' 이넘 활용 사례 // 예제 enum Answer { Yes = 'Y', No = 'N' } function askQuestion(answer: Answer) { if(answe..

JSTS 2022.07.07

[algorithm][python] 그래프 이론 - 서로소 집합, 사이클, 신장 트리, 크루스칼, 위상 정렬

그래프 트리 방향성 방향 그래프 혹은 무방향 그래프 방향 그래프 순환성 순환 및 비순환 비순환 루트 노드 존재 여부 루트 노드가 없음 루트 노드가 존재 노드간 관계성 부모와 자식 관계 없음 부모와 자식 관계 모델의 종류 네트워크 모델 계층 모델 우선순위 큐를 이용하는 다익스트라 알고리즘은 인접 리스트를 이용하는 방식이다. 플로이드 워셜 알고리즘은 인접 행렬을 이용하는 방식이다. 최단 경로를 찾아야 하는 문제가 출제되었을 때, 노드의 개수가 적은 경우에는 플로이드 워셜 알고리즘을 이용할 수 있다. 반면에 노드와 간선의 개수가 모두 많으면 우선순위 큐를 이용하는 다익스트라 알고리즘을 이용하면 유리하다. 서로소 집합 서로소 집합(Disjoint Sets)이란 공통 원소가 없는 두 집합을 의미한다. 서로소 집합..

Algorithm 2022.07.01

[TS] 3. 타입 별칭, 유니온 타입, 인터섹션 타입

타입 별칭 타입 별칭은 새로운 타입 값을 하나 생성하는 것이 아니라 정의한 타입에 대해 나중에 쉽게 참고할 수 있게 이름을 부여하는 것과 같다. // interface Person { // name: string; // age: number; // } type Person = { name: string; age: number; }; var seho: Person = { name: "세호", age: 30, }; type MyString = string; var str: MyString = 'hello'; type Todo = { id: string; title: string; done: boolean}; function getTodo(todo: Todo){ } 타입 별칭과 인터페이스의 차이점 타입 별칭과..

JSTS 2022.06.29

[TS] 2. 인터페이스

interface User { age: number; name: string; } // 변수에 활용한 인터페이스 활용 var seho: User = { age: 24, name: "세호", }; // 함수에 인터페이스 활용 function getUser(user: User) { console.log(user); } const capt = { name: "캡틴", age: 100, }; getUser(capt); // 함수의 스펙(구조)에 인터페이스를 활용 interface SumFunction { (a: number, b: number): number; } var sum: SumFunction; sum = function (a: number, b: number): number { return a + b;..

JSTS 2022.06.29

[algorithm][python] 최단경로 - 다익스트라, 플로이드 워셜

가장 짧은 경로를 찾는 알고리즘. 다익스트라 최단 경로 알고리즘 다익스트라(Dijkstra) 최단 경로 알고리즘은 그래프에서 여러 개의 노드가 있을 때, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘이다. 다익스트라 최단 경로 알고리즘은 ‘음의 간선’이 없을 때 정상적으로 동작한다. 💡 출발 노드를 설정한다. 최단 거리 테이블을 초기화한다. 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다. 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신한다. 위 과정에서 3과 4번을 반복한다. 다익스트라 알고리즘은 최단 경로를 구하는 과정에서 ‘각 노드에 대한 현재까지의 최단 거리’ 정보를 항상 1차원 리스트에 저장하며 리스트를 계속 갱신한..

Algorithm 2022.06.24

[algorithm][python] 파라메트릭 서치 유형 문제 - 이진 탐색

파라메트릭 서치는 최적화 문제를 결정 문제로 바꾸어 해결하는 기법이다. '원하는 조건을 만족하는 가장 알맞은 값을 찾는 문제'에서 주로 파라메트릭 서치를 이용한다. 문7-3. # 이진 탐색을 이용한 파라메트릭 서치 문제 풀이 n, m = list(map(int, input().split())) array = list(map(int, input().split())) start = 0 end = max(array) #이진 탐색 수행(반복) result = 0 while(start mid: total += x - mid # 떡의 양이 부족한 경우 덜 자르기(왼쪽 부분 탐색) if total < m: end = mid - 1 # 떡의 양이 충분한 경우 더 자르기(오른쪽 부분 탐색) else: result = m..

Algorithm 2022.06.21