백준 18223 < 러버덕을 사랑하는 모임 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://www.acmicpc.net/problem/18233 18233번: 러버덕을 사랑하는 모임 첫 번째 줄에 정수 N, P, E가 공백으로 구분되어 주어진다. (1 ≤ N, P ≤ 20, 1 ≤ E ≤ 1,000,000) 그 다음 줄부터 N개의 줄에 걸쳐 회원 1부터 순서대로 xi와 yi가 공백으로 구분되어 주어진다. (1 ≤ xi www.acmicpc.net 📍알고리즘 분류 - 브루트포스 📍문제 풀이 (백트래킹) DFS를 활용해 nCp 조합을 구하고, 각 경우의 수가 범위를 만족하면서 전체 합이 E인 것을 구하면 된다 1. 조합을 구해야 하므로 백트래킹 코드를 만든다. 스택에는 실제 데이터가 아닌 인덱스만 담는 것이 간편하다 (중복을 제거하기 쉽고, 속도도 빠름) 2. p 가짓수..
#47 Public API에 등장하는 모든 타입을 export하기
·
✏️ Study/🧽 JS & TS
이펙티브 타입스크립트 (댄 밴더캄 지음) 를 읽고 정리 📍요약 ✅퍼블릭 API에 코드가 노출되면 타입을 추출하는 방법은 무궁무진하다 - 따라서 사용 편의성을 위해 가능한 모든 타입을 export 해주는 것이 좋다 📍라이브러리 사용자가 타입 정보를 직접 작성해야 한다면 ✅일반적으로 모든 타입 정보가 잘 export 되어야 하지만, 그렇지 않다면, 명시적으로 작성해야 한다 ✅타입 정보를 추출할 도구가 많기 때문에 의도적으로 타입 정보를 숨기는 것은 불가능하다 예시) ReturnType, Parameters 제네릭 타입을 활용해 타입 정보를 추출 // export하지 않은 인터페이스 interface SecretName { first: string; last: string; } interface SecretS..
#46 타입 선언과 관련된 세 가지 버전 이해하기
·
✏️ Study/🧽 JS & TS
이펙티브 타입스크립트 (댄 밴더캄 지음) 를 읽고 정리 📍요약 ✅@types 의존성 관련 3가지 버전 - 개별 라이브러리 버전 - 그 라이브러리들의 @types 버전 - typescript 라이브러리 버전 ✅라이브러리를 업데이트하는 경우, 해당 @types 역시 업데이트해야 함 ✅TS로 작성된 라이브러리 : 타입 선언을 자체적으로 포함 ✅JS로 작성된 라이브러리 : DefinitelyTyped에 타입 선언을 공개하여 커뮤니티 차원에서 유지 보수 📍실제 라이브러리와 타입 모듈의 버전이 다른 경우 예) 타입 선언의 버전이 더 빠른 경우 react@16.8.6 @types/react@16.8.19 => 타입 정보의 버전이 더 빠름 ✅단순히 patch 버전만 다르기 때문에, 타입 선언을 업데이트할 필요는 없지만..
시맨틱 버저닝(semantic versioning) 과 NPM
·
✏️ Study/🪜 Dev Infra
📍참고 https://semver.org/ Semantic Versioning 2.0.0 Semantic Versioning spec and website semver.org 📍시맨틱 버저닝(semantic versioning - semver) ✅소프트웨어 버전 관리를 위해 버전 번호를 정하는 법칙 버전을 major, minor, patch 로 나눠 구분한다 예) 1.0.0 버전의 patch 버전은 0 ✅각 버전 번호가 바뀌는 상황 - major : 기존 버전과 호환되지 않게(하위호환성 보장 X) API가 바뀌는 경우 - minor : 기존 버전과 호환되면서(하위호환성 보장) 새 기능 추가 - patch : 기존 버전과 호환되면서 버그를 수정 ✅기타 - 1.0.0 이 첫 공개 API이다 - 0.y.z 는..
백준 1890 < 점프 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://www.acmicpc.net/problem/1890 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net 📍알고리즘 분류 - 다이나믹 프로그래밍 📍문제 풀이 N * N (4 { const N = +input.shift(); const board = input.map((row) => row.split(" ").map(Number)); // 아예 memo를 여유있게 넉넉하게 만들기 const memo = Array.from({ length: N + 10 }, (_) => Array..
Chrome Extension의 설정 파일, manifest
·
🥁 Frontend/🖼️ 브라우저
📍Manifest란?✅크롬 익스텐션의 설정 파일 역할로, 필수로 존재해야 한다- JSON 형식 (manifest.json 형태로 존재)- 익스텐션의 루트에 위치 📍Manifest  V3✅2023년 4월 현재 최신 버전- 2022년 1월부터 V2 버전의 새로운 앱 등록이 금지됨 📍Manifest  V3 포맷✅필수 프로퍼티- manifest_version- name- version ✅권장되는 프로퍼티- action- default_locale- icons- description 1. action : 크롬 우측 상단의 아이콘의 세부 정보를 담당하는 객체- default_icon : 우측 상단의 아이콘 이미지- default_title : 아이콘에 커서 올리면 표시할 타이틀- default_popup : ..