[JavaScript] 암묵적 타입 변환
·
JavaScript
암묵적 타입 변환 ( Implicit coercion ) 간단하게 말하면 예상치 못한 타입을 받았을 때 예상 가능한 타입으로 바꿔준다고 생각하면 된다. 사용자는 숫자 값을 넘겨야 하는 곳에 문자열을 넣을 수 있고, 문자열을 넣어야 하는 곳에 객체를 넣을 수 있다. 이런 일이 발생했을 때 자바스크립트 엔진을 사용자가 잘못 넣은 타입을 올바른 타입으로 변환하려는 시도를 한다. 자바스크립트의 주요한 기능 중 하나이지만 가장 피해야 할 기능이다. 3 * "3" // 9 1 + "2 + 1 // 121 true + true // 2 10 - true // 9 const foo = { valueOf: () => 2 } 3 + foo // 5 4 * foo // 8 const bar = { toString: () =..
[JavaScript] 자바스크립트의 원시 타입
·
JavaScript
기초 자바스크립트에는 6가지 원시 데이터 타입이 있다. 원시 데이터 타입이란 자바스크립트에서 객체가 아닌 것을 말하면 값 그대로 저장된 것을 말한다. Booleans : true or false null undefined number string symbol 6가지 원시 타입에 ECMAScript 표준은 Object를 정의했다. Object는 키-값 저장소이다. const object = { key: "value" } 즉, 원시 타입( Primitive Type )이 아닌 것은 Object이다. 여기에는 함수와 배열도 포함이다. // Primitive Types true instanseof Object; // false => boolean numm instanseof Object; // false => ..
[알고리즘] 프린터
·
알고리즘
문제 설명 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 예를 들어, 4개의 문서(A, B, C, D)가 순서대로 인쇄 대기목록에 있고 중요도가 2 1 3 2 라면 C D A B 순으로 인쇄하게 됩니다. 내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 ..
[알고리즘] 튜플
·
알고리즘
문제 설명 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유한합니다. 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..., an은 자연수), 이는 다음과 같이 집합 기호 '{', '}'..
[알고리즘] N으로 표현
·
알고리즘
문제 설명 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다. 최솟값이 8보다 크면 -1을 return 합니다. 입출력 예 N number return 5 1..
[TypeScript] rest 파라미터와 Destructring 문법에 타입 지정
·
TypeScript/기초
rest 파라미터에 타입지정 여러 개의 파라미터를 받기 위해서 사용하는 rest 파라미터에도 역시 타입을 지정할 수 있다. function addAll(...num : number[]){ console.log(num); } addAll(1,2,3,4,5); rest 파라미터는 항상 [] 안에 담겨오기 때문에 타입 지정도 array처럼 해주면 된다. Destructuring 문법에 타입 지정 마찬가지로 객체의 값을 쉽게 뺄 수 있게 해주는 Destructuring 문법도 타입을 지정할 수 있다. let person = { name : "abc", age: 13 } function consoleData({ name, age} :{name : string, age : number}){ console.log(n..
[JavaScript] Destructuring 문법
·
JavaScript
자바스크립트에서 array, object 안에 있는 데이터를 빼서 변수로 만들고 싶을 때 쓰는 문법이 있다. let person = { name : "abc", age : 13 } let name = person.name; let age = person.age; 그냥 객체명.속성 방식으로 데이터를 뺄 수 있지만, 간단하게 뺄 수 있도록 도와주는 것이 Desctructuring 문법이다. let person = { name : "abc", age: 13 } let { name, age } = person; 간단하게 객체의 속성을 빼낼 수 있는 문법이다. 가능하면 변수의 명칭을 객체의 속성명으로 작명하는 게 가독성이 좋지만, 반드시 같을 필요는 없으며, array destructuring 할 때는 변수 명칭..
[TypeScript] interface
·
TypeScript/기초
Object에서 쓸 수 있는 interface 문법 interface 문법을 쓰면 object 자료형의 타입을 편하게 지정할 수 있다. interface Square { color :string, width :number, } let 네모 :Square = { color : 'red', width : 100 } 1. 대문자로 작명하고, 2. { } 안에 타입을 명시해주는 방식이 전에 사용한 type alias 하고 용도랑 기능이 비슷해 보인다. 사실 똑같다. 그렇다면 interface와 type의 차이점은 무엇일까? extends 기능 interface는 class와 유사하게 extends 기능이 있다. interface Person { name :string; age :number } interface..