전체 글 204

조건에 맞는 도서 리스트 출력하기 (MySQL)

https://school.programmers.co.kr/learn/courses/30/lessons/144853 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT BOOK_ID, date_format(PUBLISHED_DATE, '%Y-%m-%d') as PUBLISHED_DATE from BOOK WHERE PUBLISHED_DATE LIKE '2021%' AND CATEGORY LIKE '인문' ORDER BY PUBLISHED_DATE - BOOK_ID와 PUBLISHED_DATE 열만 출력할 것이므로 이 둘만 SELECT 한다. - 출..

평균 일일 대여 요금 구하기 (MySQL)

https://school.programmers.co.kr/learn/courses/30/lessons/151136 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT ROUND(AVG(DAILY_FEE)) as AVERAGE_FEE from CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE LIKE 'SUV' 대여중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블에서 자동차 종류가 SUV 인 자동차들의 일일 대여 요금의 평균을 출력하는 문제이다. - WHERE 절을 사용해서 자동차 종류가 SUV인 자동차..

[1차] 캐시 (JS)

https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(cacheSize, cities) { let answer = 0; const cache = []; if (cacheSize === 0) { return cities.length * 5; } cities.map(city => city.toLowerCase()).forEach(city => { if (cache.includes(city)) { answer += 1; c..

useSelector 최적화

리덕스를 사용해 전역으로 값을 관리하며 최적화를 진행했다. 1. reselect 라이브러리를 사용하여 selector로 관리하는 값 memoization 2. react-redux에서 제공하는 shallowEuqal 함수를 사용해 렌더링 최소화 shallowEqual 함수는 객체의 가장 겉에 값들을 모두 비교하는데, const object = { a: { x: 3, y: 2, z: 1 }, b: 1, c: [{ id: 1 }] } 위 객체가 있다면 object.a, object.b, object.c만 비교하고 object.a.x 처럼 한뎁스 더 들어가는 값들은 비교하지 않는다. shallowEqual 말고 useSelector로 가져온 값을 객체 형식이 아닌 독립적으로 선언해줘도 된다. // shallo..

Web/React 2023.09.28

N으로 표현 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/42895?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 요약] 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하는 solution def solution(N, number): dp = [set() for i in range(9)] for i in range(1, 9): dp[i].add(int(str(N)*i)) for j in rang..

[모던 자바스크립트 Deep Dive] 22. this

this 키워드 객체는 프로퍼티와 메서드를 하나의 논리적인 단위로 묶은 복합적인 자료구조 메서드는 자신이 속한 객체의 상태 (프로퍼티)를 참조하고 변경할 수 있어야 함 ⇒ 메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 함 객체 리터럴 방식으로 생성한 객체의 경우, 메서드 내부에서 자신이 속한 객체를 가리키는 식별자를 재귀적으로 참조 가능 객체 리터럴은 circle 변수에 할당되기 직전에 평가되므로, getDiameter 메서드가 호출되는 시점에는 이미 객체 리터럴의 평가가 완료되어 객체가 생성됨 → circle 식별자에 생성된 객체가 할당된 이후이기 때문에 메서드 내부에서 circle 식별자 참조 가능 자신이 속한 객체를 재귀적으로 참조하는 방식..

[모던 자바스크립트 Deep Dive] 21. 빌트인 객체

자바스크립트 객체의 분류 자바스크립트 객체 표준 빌트인 객체 ECMAScript 사양에 정의된 객체 별도의 선언 없이 전역 변수처럼 언제나 참조 가능 호스트 객체 ECMAScript 사양에 정의되어 있지 않지만 자바스크립트 실행 환경 (브라우저 환경 또는 Node.js 환경)에서 추가로 제공하는 객체 브라우저 환경에서는 클라이언트 사이드 Web API를 호스트 객체로 제공 (DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web Worker) Node.js 환경에서는 Node.js 고유의 API를 호스트 객체로 제공 사용자 정의 객체 사용자가 직접 정의한 객체 표준 빌트인 객체 O..

[모던 자바스크립트 Deep Dive] 20. strict mode

strict mode란? 만약 함수 내에서 선언하지 않은 변수에 값을 할당할 경우, 변수를 찾아야 할당할 수 있기때문에 자바스크립트 엔진은 스코프 체인을 통해 변수를 검색함 → 해당 함수의 스코프에서 변수 찾기를 실패하면 그 함수 컨텍스트의 상위 스코프에서 변수를 검색함 → 전역 스코프에서도 변수가 없다면 ReferenceError를 발생시키는 것이 아닌 암묵적으로 전역 객체에 변수를 동적 생성함 ⇒ 암묵적 전역 개발자의 의도와 상관없이 발생한 암묵적 전역은 오류 발생 가능성을 높임 ⇒ var, let, const 키워드를 사용하여 변수를 선언 후 사용해야 함 strict mode : 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나, 자바스크립트 엔진의 최적화 작업에 문..

[모던 자바스크립트 Deep Dive] 19. 프로토타입

객체지향 프로그래밍 자바스크립트는 프로토타입 기반의 객체지향 프로그래밍 언어 원시 타입 값을 제외한 나머지 값들 (함수, 배열, 정규 표현식 등) 모두 객체 객체지향 프로그래밍 : 프로그램을 명령어 또는 함수의 목록으로 보는 전통적인 명령형 프로그래밍의 절차지향적 관점에서 벗어나 여러 개의 독립된 단위인 객체의 집합으로 프로그램을 표현하려는 프로그래밍 추상화 : 다양한 속성 중 필요한 속성만 가추려 내어 표현하는 것 객체 : 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조 (상태 데이터와 동작을 하나의 논리적인 단위로 묶은 복합적인 자료구조) 상태 데이터 : 객체의 상태를 나타내는 것 ⇒ 프로퍼티 (property) 동작 : 객체의 상태 데이터를 조작할 수 있는 것 ⇒ 메서드 (met..

[모던 자바스크립트 Deep Dive] 18. 함수와 일급 객체

일급 객체 일급 객체 특징 무명의 리터럴로 생성 가능 (즉, 런타임에 생성 가능) 변수나 자료구조 (객체, 배열 등)에 저장 가능 함수의 매개변수에 전달 가능 함수의 반환값으로 사용 가능 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미 ⇒ 함수는 값을 사용할 수 있는 곳이라면 어디서든지 리터럴로 정의 가능하며 런타임에 함수 객체로 평가 함수와 일반 객체의 다른 점 : 함수는 호출 가능하지만 일반 객체는 호출 X, 함수는 일반 객체에 없는 함수 고유의 프로퍼티 소유 함수 객체의 프로퍼티 console.dir 메서드 사용하면 함수 객체의 내부 확인 가능 function square(number) { return number * number; } console.dir(square); ..