문제의 저작권은 백준 알고리즘(https://www.acmicpc.net/)에 있습니다 문제 풀이 입력 받은 두 값을 더한 뒤에 Case#1: 2 형태에 맞게 출력해주면 되는 간단한 문제이다. 문제를 깔끔하게 풀기위해 reduce를 이용하여 합을 구하고 문자 템플릿`Case #${idx + 1}: ${n}`을 사용했다 const solution = (input) => input .slice(1, input[0] + 1) .map((s) => s.split(' ').reduce((acc, n) => acc + +n, 0)) .map((n, idx) => `Case #${idx + 1}: ${n}`) .join('\n'); const input = []; require('readline') .createIn..
문제의 저작권은 백준 알고리즘(https://www.acmicpc.net/)에 있습니다 문제 풀이 아래 문제와 역순으로 입력값부터 1까지 개행하여 출력하면 된다. 2022.07.29 - [Algorithm/Beakjoon] - 백준 2741번 / N 찍기 (nodejs 알고리즘 풀이) const solution = (input) => [...Array(+input).keys()].map((i) => +input - i).join('\n'); const print = (input) => console.log(solution(input + '')); process.stdin.on('data', print); 전체 코드 https://github.com/bluemiv/Algorithm/blob/master/b..
문제의 저작권은 백준 알고리즘(https://www.acmicpc.net/)에 있습니다. 문제 풀이 1부터 입력값까지 개행하여 출력주면 되는 간단한 문제이다. const solution = (input) => [...Array(+input).keys()].map((i) => i + 1).join('\n'); const print = (input) => console.log(solution(input + '')); process.stdin.on('data', print); 전체 코드 https://github.com/bluemiv/Algorithm/blob/master/baekjoon/nodejs/src/ex02/ex2741.js GitHub - bluemiv/Algorithm: 알고리즘 풀이 알고리즘 풀..
문제의 저작권은 백준 알고리즘(https://www.acmicpc.net/)에 있습니다. 문제 풀이 javascript로 풀때는 콘솔 입력을 받기 위해, 딱히 신경 쓸 필요가 없는 듯 하다. 아래 문제와 같이 단순히 입력 받아서 더한 값을 출력해주면 된다. 2022.07.26 - [Algorithm/Beakjoon] - 백준 10950번 / A+B - 3 (nodejs 알고리즘 풀이) const solution = (input) => { return input .slice(1, input[0] + 1) .map((l) => l.split(' ').reduce((acc, n) => acc + +n, 0)) .join('\n'); }; const input = []; require('readline') .c..
문제의 저작권은 백준 알고리즘(https://www.acmicpc.net/)에 있습니다. 문제 풀이 단순히 1 부터 입력받은 값까지 더하는 문제로 한번의 loop를 통해 문제를 풀 수 있다 const solution = (input) => { return [...Array(+input).keys()].reduce((acc, i) => acc + (i + 1), 0); }; const print = (input) => console.log(solution(input + '')); process.stdin.on('data', print); 전체 코드 https://github.com/bluemiv/Algorithm/blob/master/baekjoon/nodejs/src/ex08/ex8393.js GitHu..
오류 내용 rollup으로 공통으로 사용할 ui 모듈을 생성하여, web app에 가져다가 사용하는 도중에 아래와 같은 오류가 발생했다. Uncaught TypeError: Cannot read properties of null (reading 'useState') 오류 내용은 null에서 useState를 읽으려고 하다보니 발생한다. 공통 모듈 개발 당시에는 문제없이 동작을 했는데, rollup 번들링을 하고 나면 오류가 발생한다. 공통 모듈 개발 당시 정상 동작 확인 오류 조치 rollup 빌드시 external 옵션에 react, react-dom을 추가해줘야 한다. (만약 styled-components를 사용한다면, 같이 포함해줘야 함) rollup.config.js // ... export d..
문제의 저작권은 백준 알고리즘(https://www.acmicpc.net/)에 있습니다. 문제 풀이 처음에는 process.stdin.on()으로 입력을 받아서 풀었는데, 여러 줄을 입력을 받을 수 가 없어서 readline 모듈을 활용하여 여러 줄을 받을 수 있도록 했다. const solution = (input) => { const lines = input.map((s) => s.trim()); return lines .slice(1, lines[0] + 1) .map((l) => l.split(' ').reduce((acc, _n) => acc + +_n, 0)) .join('\n'); }; const input = []; require('readline') .createInterface({ in..
문제 풀이 단순히 반복해서 숫자를 곱해주면 되는 문제라 프로그래밍을 처음 접하는 사람이 풀어보기 좋은 문제다 const solution = (input) => { const num = +input; return [...Array(9).keys()].map((idx) => `${num} * ${idx + 1} = ${num * (idx + 1)}`).join('\n'); }; const print = (input) => console.log(solution(input + '')); process.stdin.on('data', print); 전체 코드 https://github.com/bluemiv/Algorithm/blob/master/baekjoon/nodejs/src/ex02/ex2739.js GitH..
문제 문제 풀이 input 값들을 map 자료구조에 담아서, 동일한 주사위 눈의 개수가 몇개인지 파악하도록 했다. 만약 map의 key 값이 1개인 경우, 주사위 3개의 눈이 모두 동일한 경우 (e.g. 6, 6, 6) 2개인 경우, 주사위 눈 중 2개가 동일하고 1개가 다른 경우 (e.g. 2, 2, 5) 그 외에는 주사위 3개가 모두 눈이 다른 경우 (e.g. 2, 3, 6) const solution = (input) => { const ns = input.split(' ').map((s) => +s); const nm = ns.reduce((acc, n) => { if (acc[n]) { return { ...acc, [n]: acc[n] + 1 }; } else { return { ...acc..
문제 문제 풀이 문제를 요약하면, 현재 시간에서 입력받은 분(minute)을 더한 뒤의 시각을 구하면 된다. const solution = (input) => { const [a, b, c] = input.split(/\s+/).map((s) => +s); const sum = b + c; const carry = parseInt(sum / 60); const m = sum % 60; const h = (carry > 0 ? a + carry : a) % 24; return `${h} ${m}`; }; const print = (input) => console.log(solution(input + '')); process.stdin.on('data', print); 분은 60으로 나머지 연산을 하면 구할..
문제 문제 풀이 문제를 요약하면, 현재 시간에서 45분을 뺀 시각을 구하면 된다. 시간 구하기 M이 45분보다 작은 경우, 시간이 바뀌기 때문에 -1을 해준다. 단 H의 값이 0 인경우에는 -1을 하면 23이 된다 분 구하기 M이 45분보다 작다면 60 + M - 45를 해주고, 크거나 같다면 M - 45를 해준다 const solution = (input) => { const [h, m] = input.split(' ').map((s) => +s); const nextH = m { const input..
쉬운 문제는 웹 사이트에서 풀어도 되지만, 복잡한 문제는 여러 경우의 케이스에 대해서 실행해보는 경우가 생긴다. 백준에서는 다른 알고리즘 문제 사이트와 다르게 웹에서 실행해볼수가 없어서 로컬에서 따로 실행시켜봐야하는 불편함이 있다. 로컬에서 실행할때 항상 node [파일명].js 명령어로 수행해보면서 문제를 풀었는데, 이방법도 상당히 귀찮아서 jest를 이용하여 편하게 문제를 풀어보려고 한다. jest 설정 프로젝트 설정 우선 단위테스트를 하기 위해, jest를 설치한다. yarn init -y yarn add --dev jest jest config 설정 설치 후 jest.config.js 파일을 작성한다. jest는 설정 내용을 package.json에 작성하거나, jest.config.js에 작성할..
문제 풀이 2개의 숫자를 입력받아, 사칙연산 값과 나머지 연산 값을 출력하면 되는 문제이다. 주의할 점은 나눗셈을 한 뒤에 몫만 출력해야하기 때문에 정수값으로 파싱해주는 작업을 해야한다. (솔직히 한번 틀림) const solution = (input) => { const [a, b] = (input + '').split(' ').map(s => +s); console.log(a + b); console.log(a - b); console.log(a * b); console.log(parseInt(a / b)); console.log(a % b); } process.stdin.on('data', solution); 전체 코드 https://github.com/bluemiv/Algorithm/blob/ma..
직장 생활하다보니 알고리즘 문제를 안풀어본지 오래된거 같아서, 다시 알고리즘 문제를 풀어보기로 했다. 매일 풀면 좋겠지만 시간이 가능하려나.. 문제 풀이 nodejs에서는 콘솔 입력을 받을때 process.stdin.on을 사용한다. 백준에서 콘솔 입력을 받는 여러가지 방법이 있는것으로 보이나, 아래 방법이 제일 간단해보여서 아래와 같이 풀었다. 문제는 상당히 쉬운 문제로, 단순히 2개의 숫자를 입력받아서 더한 값을 콘솔 출력하는 문제이다. (프로그래밍 입문자가 문법을 익힐겸 풀기엔 좋은것 같음) const solution = (input) => { const [a, b] = (input + '').split(' ').map(s => +s); console.log(a + b); } process.stdi..
프로젝트 생성 본 글에서는 ui라는 이름의 디렉토리를 생성하여, esm 모듈을 만든다. mkdir ui cd ui 패키지 관리툴은 yarn berry 버전을 사용하기 위해, 아래 명령어를 수행한다. yarn set version berry package.json을 생성한다. yarn init -y { "name": "ui", "packageManager": "yarn@3.2.1", "version": "0.0.1", "main": "lib/index.js", "scripts": { "build": "" } } react 모듈을 만들기 위해, react와 react-dom을 의존성에 추가한다. yarn add --dev react react-dom package.json 에 react와 react-dom에..
yarn berry를 처음 사용해보면서, prettier와 eslint를 사용하려고 했다. 우선 prettier 와 eslint를 설치하고, $ yarn add --dev prettier eslint WebStorm에서 Actions on save 설정을 하려고 했으나, WebStorm에서 방금 설치했던 package를 찾지 못하는 이슈가 있었다. 추측하기론 .yarn/cache를 보면 패키지들이 .zip 형태로 압축되어 있는데, WebStorm에서는 패키지가 압축되어 있어서 찾지 못하는것 같았다. 방법이 없나 삽질을 하다가, jetbrain 문서에서 해결방법을 찾았다. https://www.jetbrains.com/help/webstorm/installing-and-removing-external-so..
초기 설정 빈 프로젝트 생성 서버 구축을 위한 디렉토리 생성 $ mkdir apollo-server-test $ cd apollo-server-test yarn berry 설정 yarn berry를 사용하기 위해 yarn set version 명령어를 통해 berry로 변경해준다. $ yarn set version berry 변경 후 제대로 변경이 됐는지 확인해본다. $ yarn -v 3.2.1 Apollo Server 구축 의존성 모듈 설치 graphql 서버를 구축하기 위해, 본 글에서는 apollo-server를 사용한다. yarn berry를 사용하여, apollo-server와 graphql를 설치한다. $ yarn init $ yarn add apollo-server graphql zero-..
Berry 스킨 다운로드 아래 git 페이지에서 소스 파일들을 다운로드 받아주세요 https://github.com/bluemiv/tistory_berry_skin/releases Releases · bluemiv/tistory_berry_skin TISTORY 블로그 스킨 - Berry. Contribute to bluemiv/tistory_berry_skin development by creating an account on GitHub. github.com 압축해제 해주세요 압축해제를 하면, 총 7개의 파일이 있습니다. 티스토리 스킨 등록 관리자 페이지로 이동해주세요. 그리고, 꾸미기 > 스킨 변경 > 스킨 등록 을 클릭해주세요 상단에 "추가" 버튼을 클릭해주세요 위에서 압축해제 했던 파일들을 업로..
Tistory Berry Skin v2.2.0 배포 Berry 스킨 v1에 이어서 v2을 배포했습니다. 요즘 관리를 너무 못하긴 했던거 같아요. (직장도 다녀야하고, 공부도 해야하고 스킨도 만들어야하고 너무 할게 많네요ㅠ) 스킨 적용 방법 기능 설명 필요없이 스킨 적용하고 싶은 분은 아래 글을 참고해주세요. 2022.05.21 - [티스토리 스킨/Berry Skin] - [티스토리 스킨] Berry 스킨 v2.1.0 적용 방법 [티스토리 스킨] Berry 스킨 v2.1.0 적용 방법 Berry 스킨 다운로드 아래 git 페이지에서 소스 파일들을 다운로드 받아주세요 https://github.com/bluemiv/tistory_berry_skin/releases Releases · bluemiv/tisto..
Typescript 기본 타입 Typescript에서 사용할 수 있는 기본 타입은 아래와 같다 number: 정수, 소수 등 숫자 타입 string: 문자열 타입 boolean: 불리안 타입 (참, 거짓) object: 객체 타입 symbol: 심볼 타입 enum: enum 타입 any: any 타입은 모든 기본 타입의 상위 타입 tuple: tuple 타입 ... 숫자 타입 (number) 숫자 타입은 정수(양수, 0, 음수), 소수 값을 할당할 수 있다. 키워드는 number를 사용한다. let numValue: number; numValue = 3; console.log(numValue); // 3 numValue = 3.14; console.log(numValue); // 3.14 쉼표를 이용하여..