분류 전체보기
-
[프로그래머스] 가장 먼 노드알고리즘 2022. 2. 10. 01:54
문제풀이 처음에는 플로이드 와샬(O(n^3)) 을 사용했지만, 시간초과가 났다. 그 다음에는 다엑스트라(O(nlogn)) 을 사용했지만, 풀지 못했다. 그러다가 가장 쉽고 직관적인 BFS 를 사용해서 풀게되었다. 시간복잡도 O(n^2) 이하. (visited 에서 예외처리를 해주기 때문) 소스코드 from collections import deque from collections import defaultdict; def solution(n, edge): link = defaultdict(list); visited = [0] * (n+1); ret = [0] * (n+1); for a,b in edge: link[a].append(b); link[b].append(a); queue = deque(); i..
-
[타입스크립트] 함수 호출 시그니처TypeScript 2022. 2. 9. 22:54
[타입스크립트] 함수 호출 시그니처 함수 호출 시그니처 정의 함수 호출 시그니처는 함수의 타입을 구체적으로 정해주며, 함수의 인수와 리턴값의 타입을 정한다. 특징 함수 호출 시그니처는 값이 아닌 타입 정보만 포함한다. 함수 호출 시그니처를 사용할 경우 매개변수의 타입을 다시 지정할 필요가 없다. 이미 함수 호출 시그니처에 매개변수 타입에 대한 정보가 들어있기 때문이다. 반환타입도 마찬가지로 다시 지정할 필요가 없다. // 함수 호출 시그니처 type myFunc = (a: string, b: string) => string; let signiture: myFunc = (firstString, secondString) => { firstString += "a"; secondString += "c"; ret..
-
[타입스크립트] 제너레이터카테고리 없음 2022. 2. 9. 22:47
[타입스크립트] 제너레이터 제너레이터 정의 제너레이터는 값을 생성하는 속도를 제어할 수 있다. function* createFiboGenerater() { let a = 0; let b = 1; while (true) { yield a; [a, b] = [b, a + b]; } } let generator = createFiboGenerater(); console.log(generator.next()); // {value: 0, done: false}; console.log(generator.next()); // {value: 1, done: false}; console.log(generator.next()); // {value: 1, done: false}; console.log(generator.ne..
-
[타입스크립트] 함수, 매개변수 타입추론카테고리 없음 2022. 2. 9. 22:24
[타입스크립트] 함수, 매개변수 타입추론 함수, 매개변수 타입추론 정의: 타입스크립트는 매개변수의 타입은 추론하지 않는다. 따라서 매개변수의 타입은 명시적으로 정의하는게 좋다. 하지만 함수의 리턴값은 자동으로 타입을 추론하므로 개발자가 직접 리턴값의 타입을 코딩할 필요가 없다. (타입스크립트가 자동으로 해주는 일을 굳이 개발자가 할 필요가 없기 때문) type Person = { name: string; age: number }; let my: Person = { name: "gak", age: 23 }; function changeAge(person: Person, num: number) { person.age += num; return person; // person 의 타입을 Person 으로 타입..
-
[타입스크립트] null, undefined, void, neverTypeScript 2022. 2. 9. 21:05
[타입스크립트] null, undefined, void, never 1. null 타입 정의: null 은 값이 없다는 의미이다. 2. undefined 타입 정의: undefined 타입은 아직 값이 정의되지 않았다는 의미이다. 3. void 타입 정의: 함수의 리턴값이 없을 때 할당하는 타입이다. 4. never 타입 정의: 함수가 무한 루프 함수이거나 에러를 던지는 함수일 때 할당하는 타입이다. // null 타입 let a: null = null; // undefined 타입 응용 let b: (undefined | string) = undefined; b = "cat"; // void 타입 function voidFunction() :void { console.log("Hello World!")..
-
[타입스크립트] 유니온, 인터섹션TypeScript 2022. 2. 9. 20:31
[타입스크립트] 유니온, 인터섹션 타입 유니온 1. 정의 유니온이란, "또는" 의 역할을 한다. "|" 를 사용하여 표현한다. function print(text: string | number) { console.log(text); }; print("안녕하세요.") // 안녕하세요. print(4) // 4 print(true) // Error (text 는 string 또는 number 타입만 가능함) 인터섹션 1. 정의 인터섹션이란, 교집합을 포함하는 "합집합" 의 역할을 한다. "&" 를 사용하여 표현한다. type Dog = { name: string, bark: boolean }; type Cat = { name: string, likeFish: boolean }; type CatAndDog =..
-
[개발일지] 2.8 에러메세지는 구체적으로 콘솔에 띄우기JavaScript 2022. 2. 8. 22:10
오늘의 코딩 목표 현재 목록 페이지에서 을 눌렀을 때, 내가 가입된 팀 목록을 보여주는 페이지를 만들고 팀목록 페이지에서 팀만들기도 진행 할 수 있게 만들예정이다. 결과 TeamList 를 불러오는 api 가 아직 구현되지 않아서 팀 목록을 보여주는 페이지를 100% 구현하지는 못했지만, 로직은 다 짜둔상태이다. 그 외 app.js 에서 getUserInfo axios 의 결괏값이 올바르게 처리되지 않는 에러를 수정했다. 감상 useDispatch 는 리액트 컴포넌트에서만 사용할 수 있다. 즉, 리덕스의 상태를 바꾸는건 리액트 컴포넌트에서만 가능한 일이다. 백앤드 개발자, 프론트 개발자의 편의를 위해서는 콘솔 에러를 구체적으로 출력해주는게 디버깅에 도움이 된다. ex) console.log("로그인 에러..