본문 바로가기

반응형

분류 전체보기

(645)
프로그래머스 : 무지의 먹방 라이브 JavaScript 각각의 들어있는 음식의 양을 막대형 그래프로 표현해 본다면 O O O O O O 이것을 크기가 작은 순으로 정렬하다면 O O O O O O 큰것 부터 먹더라도 k값이 전체 음식의 수보다 앞선다면은 사이클 한번이 돌고나서는 남은 K수는 K-len(음식의 수)가 될것이고 그래프의 모양은 다음과 같이된다. O O O 이것에서 아이디어를 얻어서 문제를 풀면 다음과 같은 코드가 된다. 추가팁으로는 1~n 차례대로 음식을 순회하기 때문에 index순서대로 뽑아야한다 (문제에서는 다음 음식에 가장 많이 남은 음식을 선택한다고했다. 예를들어 5번 음식을 뽑앗으면 6~N, 1~4번중 가장 많이 남은것을 뽑는 다는 뜻 따라서 다음과 같이 index로 정렬하면 정답이 나온다.) function solution(food_ti..
프로그래머스 : 단어 퍼즐 JavaScript 다익스트라로 접근하면 편하다. const INF = 987654321; function solution(strs, t) { const n = t.length; var digit = Array.from({length: n},() => INF); const q = []; q.push([-1,0]); while(!(q.length === 0)) { const [index, count] = q.shift(); for(let str of strs) { let len = str.length; if(index + 1 + len > n ) { continue; } const subStr = t.substring(index + 1 ,index + 1 + len); if(str === subStr && digit[inde..
바인딩 되지 않는 this 화살표 함수가 나오기 전까지는, 모든 새로운 함수는, 어떻게 그 함수가 호출되는지에 따라 this값을 정의했습니다. 이는 객체 지향 스타일로 프로그래밍할 때 별로 좋지않습니다. function Person() { this.age = 0; setInterval(function growUp() { this.age++; }, 1000); } var p = new Person(); 비엄격 모드에서는 setInterval 안의 this와 Person객체안의 this는 다릅니다. 엄격모드란? https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Strict_mode Strict mode - JavaScript | MDN 엄격 모드는 평범한 JavaScrip..
정규 표현식과 일치하는 값 해체하기 function parseProtocol(url) { var parsedURL = /^(\w+)\:\/\/([^\/]+)\/(.*)$/.exec(url); if (!parsedURL) { return false; } console.log(parsedURL); // ["https://developer.mozilla.org/en-US/Web/JavaScript", "https", "developer.mozilla.org", "en-US/Web/JavaScript"] var [, protocol, fullhost, fullpath] = parsedURL; return protocol; } console.log(parseProtocol('https://developer.mozilla.org/en-US/Web/J..
javascript: 상속 (extends) 특정 Api를 호출해서 상속하는 Api가 있다면 기본 뼈대는 비슷한고 Api별로 반환값을 달리하는 예제를 만들어보자. class Api { url: string; ajax: XMLHttpRequest; constructor(url: string) { this.url = url; this.ajax = new XMLHttpRequest; } protected getRequest(): AjaxResponse { this.ajax.open('GET', this.url, false); this.ajax.send(); return JSON.parse(ajax.response); } } class NewsFeedApi extends Api { getData(): NewsFeed[] { return this.getRe..
TypeScript: typeAlias vs interface 타입스크립트에서는 타입을 명시하기위해서 두가지 방법을 사용한다. 문법적으로 비슷하지만 약간다르고 지원하는 내용도 차이가 있다. 다음과 같은 News와 NewsFeed 타입으로 명시하겠다. typeAlias type News = { id: number; time_ago: string; title: string; url: string; user: string; content: string; } type NewsFeed = & News { commnets_count: number; points: number; read?: boolean; } interface interface News { id: number; time_ago: string; title: string; url: string; user: stri..
TypeScript: 제너릭 TypeScript를 통해서 반환값의 타입을 명시해 줄 수 있습니다. 반환값은 REST API이고 그값에 따라 Json이 다음과 같은 객체를 나타낸다고 생각합니다. a API {a : string, b : string} b API {c : string, d : number} 일반적으로 타입스크립트는 명시해줘야 하기 때문에 다음과 같은 함수를 작성합니다. type A = { a: string; b: string; } type B = { c: string; d: number; } function getData(url: string): A | B { ajax.open('GET', url, false); ajax.send(); return JSON.parse(ajax.response); } cont b_API ..
프로그래머스 : 트리 트리오 중간값 javascript 문제풀이 기본적으로 javascript는 코딩 테스트 문제를 푸는것에 적절한 언어가 아닙니다. 해당문제는 BFS탐색을 필요로하는 문제입니다. 1. 임의이 node에서 가장먼 node를 구합니다. 그것을 x라고 하겠습니다. 2. x에서 가장 먼 노드를 구합니다. 그것을 y라고 하겠습니다. 이때 발견된 y가 2이상이라면 x - y의 길이를 반환합니다. 3. 발견된게 1개라면 1. 2. 를 진행하고 그래도 1개라면 distance -1 을 진행합니다. // 트리의 지름을 구하는 방법은 그리디를 이용해서 풀수가 있다. // 1. 임의의 노드 a 에서 가장 깊은 노드 b를 DFS or BFS를 이용해서 구한다. // 2. b노드에서 가장깊은 노드 c를 찾으면 b-c가 트리의 지름이 된다. class Queue {..

반응형