본문 바로가기

Code

[JS] Map, Set 자료형 심화 이해 iterable 객체 정의 for…of 반복문을 적용할 수 있는 객체로 Symbol.iterator가 구현된 객체 for…of 문은 Symbol.iterator를 자동으로 호출함. 배열, 문자열이 대표적 사례이며 객체는 iterable이 아닌 대표적 사례 개념 심화 관심사의 분리 원칙에 근거해 object[Symbol.iterator] 활용 let range = { from: 1, to: 5 }; // 1. for..of 최초 호출 시, Symbol.iterator가 호출됩니다. range[Symbol.iterator] = function() { // Symbol.iterator는 이터레이터 객체를 반환합니다. // 2. 이후 for..of는 반환된 이터레이터 객체만을 대상으로 동작하는데, 이때 다음 값.. 더보기
[JS] 배열을 객체로 바꾸는 방법 속도 비교 (forEach VS. reduce) 0. 참고 https://leanylabs.com/blog/js-forEach-map-reduce-vs-for-for_of/ Performance of JavaScript .forEach, .map and .reduce vs for and for..of Declarative programming is better 95% of the time. However, when performance matters, imperative style is the go-to solution. leanylabs.com 요지 - JS에서 iterable obejct를 변환하는 다양한 방법들이 있다. - 가독성 측면에서는 선언형 프로그램이 나을 수 있으나 성능 측면에서는 명령형 프로그래밍이 나음 - Array 객체의 메서드 보.. 더보기
[Algorithm] 그리디 알고리즘 이해하기 그리디 알고리즘이 최적해를 구할 수 있는 조건 1. greedy choice property: 현재 선택이 이후의 선택에 영향을 주지 않아야 한다. 영향을 준다는 것은 현재 선택 이전에는 사용 가능했던 후보가 현재 선택 이후 사용 불가능해진 경우 ex) 10, 30, 40, 50의 조합으로 70을 만들기 50을 고르면 30, 40을 고를 수 없게됨. 2. optimal substructure: 매 순간 최적의 해가 문제 전체에 대한 최적의 해여야 함. 즉, 매 순간의 선택이 최적의 선택으로 가는 길이어야한다. * 추가 공부 필요 두 조건의 차이: https://stackoverflow.com/questions/26439973/optimal-substructure-and-greedy-choice Optim.. 더보기
[JS] 소수점 데이터 출력하기 (feat. 야구 타율) 1. 문제 상황 타율을 할푼리의 형태로 출력하기 소수점 아래의 값이 0인 경우를 조심해야 함. 2. 코드 const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); var k_rate = ['할', '푼', '리'] rl.on("line", (rate) => { for (var i = 0; i 정수 형태로 출력 var digit = Math.floor(rate * (10 ** (i + 1))) // 2. 해당 소수점 자리가 0인 경우를 고려하기 위함 if (digit !== 0) { // 3. 소수점 자리가 커질 수록 정수도 커지기 때문에 .. 더보기
[JS] 숫자형으로의 변환 number, parseInt 차이에 대한 고찰 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/map Array.prototype.map() - JavaScript | MDN map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다. developer.mozilla.org https://dororongju.tistory.com/71 [자바스크립트] 형변환 Number() 와 parseInt() 의 차이 Number(str) / parseInt(str) Number(str) 문자열을 인자로 받으면 해당 문자열을 숫자로 바꿔줍니다. 아래의 코드는 '1234' 라는 문자열을 1234 라는 숫자로 형.. 더보기
[JS] sort, map은 화살표를 좋아해 1. 개념 함수식을 간단하게 표현하는 방식으로 생김새에서 그 이름이 유래됨 2. 작동 방식 예시: 합 구하기 기존 함수 let standard = function(a, b) { return a+b; }; alert(standard(1, 2)); // 3 화살표 함수 let sum = (a, b) => a + b; alert(sum(1, 2)); // 3 3. 적용 사례 1) sort() 개념: 배열을 정렬하는 함수로, 내림차순으로 정렬하기 위해서는 매개변수를 입력해야 함. (오름차순은 매개변수 생략) 형태: 배열.sort(function(a, b)) {} 매개변수 function(a, b)와 a-b값의 의미 배열에 a, b라는 두 값만 존재하지 않는 경우가 많지만 두 개의 변수만 다룬다. 배열 [4, 5.. 더보기
[JS] 입력된 여러 개의 숫자 계산하기 1. 코드 const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", function (line) { input = line.split(' ').map((e) => parseInt(e)); rl.close(); }).on("close", function () { }); 2. 유의점 - 입력된 객체는 문자열로 처리되므로, 정수로 바꿔주는 parseInt를 활용해야 한다. - 객체에 담긴 데이터가 여러개일 경우 객체에 속한 모든 값에 동일한 메쏘드를 적용하는 map를 활용해야 한다. 더보기
[JS] 콘솔에 여러 문장에 걸쳐 입력 받기 최고의 자료: https://lakelouise.tistory.com/140?category=1033473 [Node.js] 자바스크립트 콘솔에서 입력 받는 방법 🎯 Node.js 콘솔창 입력받기 백준에서 알고리즘 문제를 풀 때 자바스크립트 입력받는 방법을 알아보자! 📝 한 줄 값 입력받기 자바스크립트에서는 readline 모듈을 이용하면 콘솔을 통해 값을 입력 lakelouise.tistory.com // readline 모듈 불러오기 const readline = require("readline"); // 콘솔에 input, output 인터페이스 만들고 rl 변수 생성 const rl = readline.createInterface({ input: process.stdin, output: proce.. 더보기