전체 글
[오픈소스 기여] @mui/x-date-pickers 한국어 번역 추가
https://github.com/mui/mui-x/releases/tag/v5.16.0 Release v5.16.0 · mui/mui-x We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights ✨: 🎁 Introduce column grouping for data grid (#5133) @alexfauquette You can now gro... github.com 최근에 Material UI의 x-date-pickers에 한국어 번역을 추가하여 PR을 올렸고, 5.16.0 버전 릴리즈에 반영이 되었다. 지인 분이 최근 프로젝트에서 mui의 x-date-pic..
[프로그래머스 Level 2] 괄호 변환 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(p) { // 균형잡힌 괄호 문자열 판독 const checkBalance = (w) => { let balance = 0; for (const str of w) { if (str === '(') { balance++; } else { balance--; } if (balance < 0) { return false; } } return tr..
[프로그래머스 Level 2] 메뉴 리뉴얼 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(orders, course) { // orders를 순회하면서 코스요리 메뉴 후보 정보를 저장할 객체 const candidates = {}; // 주문과 코스요리의 메뉴 개수가 주어지면 // candidates에 현재 주문에서 만들 수 있는 모든 코스요리에 대해 주문 수를 갱신 const dfs = (order, maxLength, can..
[프로그래머스 Level 2] 튜플 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(s) { return s .match(/\{(\d+,)*\d+\}/g) .map(set => set.slice(1, -1).split(',').map(Number)) .sort((a, b) => a.length - b.length) .map((cur, index, arr) => index ? cur.find(elem => !arr[index..
[프로그래머스 Level 2] 주차 요금 계산 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(fees, records) { const [BASIC_TIME, BASIC_FEE, UNIT_TIME, UNIT_FEE] = fees; const AUTO_OUT_TIME = 60 * 24 - 1; const parkInfo = {}; records.forEach(str => { const strings = str.split(' '); co..
[백준 14888 - Node.js] 연산자 끼워넣기
🔗 문제 링크 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net ✏️ 풀이 const stdin = require('fs').readFileSync('/dev/stdin').toString().trim(); const input = stdin.split('\n').map(v => v.split(' ').map(Number)); const [N, A, operators] = input; con..
[백준 10819 - Node.js] 차이를 최대로
🔗 문제 링크 https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net ✏️ 풀이 const stdin = require('fs').readFileSync('/dev/stdin').toString().trim(); const [N, ...A] = stdin.split(/\s/).map(Number); const solve = () => { let max = 0; const permutation = []; const selected = Array(N).fill(fals..
[JS] 자바스크립트로 엑셀 파일(xlsx) 만들어서 다운받기
엑셀 파일을 만들어주는 라이브러리에는 SheetJS, ExcelJS 등이 있는데, 그 중에서 비교적 엑셀 파일의 커스텀이 자유로운 ExcelJS에 대해서 다루도록 하겠다. 기본 형식 import ExcelJS from 'exceljs'; // workbook(엑셀 파일 하나를 구성하는 여러 시트로 이루어진 단위) 생성 const workbook = new ExcelJS.Workbook(); // sheet 생성 const worksheet = workbook.addWorksheet('시트 이름'); workbook은 하나의 파일을 나타내고, 하나의 workbook은 여러 개의 worksheet를 가질 수 있다. 데이터 입력 방식 ExcelJS에서는 다양한 방법으로 데이터를 입력할 수 있다. workshe..
[TS] const assertion (as const)
타입스크립트에서 변수를 const로 선언할 때와 let으로 선언할 때 타입 추론이 다르게 일어난다. let a = 'hi'; // let a: string const b = 'hi'; // const b: "hi" 타입스크립트는 string literal type을 지원하여 특정 문자열 자체를 타입으로 다룰 수 있다. const로 선언한 변수는 위와 같이 string이라는 넓은 범위의 타입 대신 구체적으로 딱 하나의 문자열인 'hi'를 가리키게 된다. 이는 다른 number 타입에서도 마찬가지이다. let a = 1; // let a: number const b = 1; // const b: 1 그런데 배열이나 객체의 경우에는 const로 선언하여도 문자열이나 숫자일 때처럼 구체적으로 범위를 좁히지 않..
[npm] npm install할 때 unable to resolve dependency tree 오류
요즘 npm intsall을 하면 이런 에러를 자주 마주하게 된다. 원인은 2021년 2월 출시된 npm 7버전부터 추가된 peerDependencies를 자동으로 설치하는 기능 때문이다. peerDependencies를 자동으로 설치할 때, 이미 설치되어 있는 의존성(direct dependencies of the root project)과 동일하지만 버전이 다른 peerDependencies가 존재하면 충돌이 일어나서 위와 같은 에러가 나게 된다. $ npm install @craco/craco --legacy-peer-deps $ npm install @craco/craco --force 해결하려면 npm install 모듈명 명령어 뒤에 --legacy-peer-deps 또는 --force를 추..