전체 글
-
이펙티브 타입스크립트- 3장 타입추론 (2)TypeScript 2022. 4. 10. 12:35
아이템 20. 다른 타입에는 다른 변수 사용하기 한 변수를 다른 타입으로 재사용해도 되는 자바스크립트와 달리 타입스크립트는 에러가 난다. let id = '12-34-56'; fetchProduct(id); // string으로 사용 id = 123456; // '123456' 형식은 'string'형식에 할당할 수 없습니다. fetchProductBySerialNumber(id); // number로 사용 //'string' 형식의 인수는 'number' 형식의 매개변수에 할당될 수 없습니다. 이때 에러를 고치기 위해서는 id가 string과 number를 모두 포함할 수 있도록 string | number로 유니온 id 타입을 사용해 확장할 수 있다. let id: string|number = '1..
-
[04.완전탐색] 뒤집은 소수알고리즘 2022. 4. 3. 22:11
문제 N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하 는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출 력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다. ▣ 입력설명 첫 줄에 자연수의 개수 N(3 { for(let i=2; i 1 } for(let i=0; i < array.length; i++) { let str = array[i].toString().split('').reverse().join(''); if(isPrime(Number(str))) { answe..
-
[04.완전탐색] 자리수의 합알고리즘 2022. 4. 3. 22:00
문제 N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요. 자릿수의 합이 같은 경우 원래 숫자가 큰 숫자를 답으로 합니다. 만약 235 와 1234가 동시에 답이 될 수 있다면 1234를 답으로 출력해야 합니다. ▣ 입력설명 첫 줄에 자연수의 개수 N(3 max) { max = sum maxIdx = i; } if(sum === max) { maxIdx = (array[maxIdx] > array[i]) ? maxIdx : i } } return array[maxIdx] } 접근과정 매개 변수로 받는 배열을 탐색하기 위한 1차 반복문 그리고 해당 인덱스의 값의 각 자리수의 총합을 구하기 위한 2차 반복문을 돌려야 한다. max값을 위한 변..
-
[03.문자열탐색] 문자열 압축알고리즘 2022. 4. 3. 21:55
문제 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시 오. 단 반복횟수가 1인 경우 생략합니다. ▣ 입력설명 첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다. ▣ 출력설명 첫 줄에 압축된 문자열을 출력한다. ▣ 입력예제 1 KKHSSSSSSSE ▣ 출력예제 1 K2HS7E 결과 X 접근과정 모범답안 const solution = (str) => { let answer = ''; let cnt = 1; str = str + ' ' console.log('str: ', str) for(let i = 0; i < str.length -1; i++) { if(str[..
-
이펙티브 타입스크립트- 3장 타입추론 (1)TypeScript 2022. 4. 3. 14:47
아이템 19. 추론 가능한 타입을 사용해 장황한 코드 방지하기 타입스크립트를 처음 접한 개발자는 변수를 선언할 때마다 타입을 명시해야 한다고 생각하여 모든 변수에 타입을 선언하는 실수를 자주 범한다. //X let x:number = 12; 다음처럼만 해도 충분하다. //O let x = 12; 편집기에 x에 마우스를 올려 보면, 타입이 이미 number로 추론되어 있음을 확인할 수 있다. 타입 추론이 된다면 명시적 타입 구문은 필요하지 않다. 아래 예시를 보자. Product 타입과 기록을 위한 함수를 작성했는데 나중에 id에 문자가 들어 있음을 알게 됐다. interface Product { id: number; name: string; price: number; } interface Product..
-
이펙티브 타입스크립트- 2장 타입시스템 (4)TypeScript 2022. 4. 2. 23:37
아이템 15. 동적 데이터에 인덱스 시그니처 사용하기 자바스크립트 객체는 문자열 키를 타입의 값에 관계없이 매핑한다. 타입스크립트에서는 타입에 인덱스 시그니처를 명시하여 유연하게 매핑을 표현할 수 있다. type Rocket = {[property: string]: string}; const rocket: Rocket = { name: 'Falcon 9', variant: 'v1.0', thrust: '4,940 kN', }; // 정상 인덱스 시그니처는 다음 타입 문법을 의미한다. type Rocket = {[property: string]: string}; const rocket: Rocket = { name: 'Falcon 9', variant: 'v1.0', thrust: '4,940 kN', ..
-
이펙티브 타입스크립트- 2장 타입시스템 (3)TypeScript 2022. 4. 1. 01:13
아이템 14. 타입 연산과 제너릭 사용으로 반복 줄이기 같은 코드를 반복하지 말라는 DRY(don't repeat yourself) 원칙은 개발자라면 어느 분야든 들어본 말이다. 하지만 타입에 대해서는 쉽게 간과하기 쉽다. 아래 예시를 보자 interface Person { firstName: string; lastName: string; } // X interface PersonWithBirthDate { firstName: string; lastName: string; birth: Date; } // O interface PersonWithBirthDate extends Person { birth: Date; } // O type PersonWithBirthDate = Person & { birth:..
-
이펙티브 타입스크립트- 2장 타입시스템 (2)TypeScript 2022. 3. 29. 00:56
아이템 10. 객체 래퍼 타입 피하기 자바스크립트의 기본형 타입들(string, number, boolean, symbol, bigint)는 해당 타입과 관련한 메서를 간편하게 사용할 수 있게 해주는 Wrapper 객체와 함께 사용되곤 한다. 'primitive'.charAt(3); // 'm' chatAt은 string의 메서드가 아님에도 쓸 수 있다 -> 객체래퍼가 동작하기 때문이다. 그 과정은 문자열 기본형은 String 객체로 wrapping 되고 chatAt 메서드를 호출한 후에 마지막에 wrapping한 객체를 다시 버린다. 하지만 string 기본형과 String 객체 래퍼가 항상 동일하게 동작하지는 않다. String 객체는 오직 자기 자신하고만 동일하다 'hello' === new Str..