전체 글 10

[백준] 14501 - 퇴사 (node.js)

문제 코드let fs = require("fs");// "/dev/stdin"// "./text.txt"const [n, ...arr] = fs.readFileSync("./text.txt").toString().split("\n");const N = Number(n);const list = arr.map((v) => v.split(" ").map((v) => +v));let dp = Array(N + 1).fill(0);for (let i = 0; i  문제 해결 과정 1. 완전 탐색첫날부터 상담을 하는 경우와 안하는 경우를 나눠서 dfs를 한다.이때 퇴사일이 O(2^N)이라고 생각했고 1 현재 상담을 하는 경우, 상담을 완료하는 시간이 퇴사일(N)을 넘지 않아야 한다. 퇴사일을 넘지 않는다면 받을 금..

알고리즘 2024.07.04

[백준] 2293 - 동전 1 (node.js)

문제 코드let fs = require("fs");// "/dev/stdin"// "./text.txt"let input = fs.readFileSync("./text.txt").toString().split("\n");const [n, k] = input .shift() .split(" ") .filter((v) => v);let coins = input.map((v) => +v);let dp = Array(Number(k) + 1).fill(0);dp[0] = 1;coins.forEach((v) => { for (let j = v; j  문제 해결 과정저번 멘토링 받았던 것을 토대로 우선 문제를 풀기 전 시간 복잡도와 공간 복잡도를 생각해봤다. 문제 조건이 1 그리고 앞서 사용한 동전에 따라 ..

알고리즘 2024.06.18

[백준] 1863 - 스카이라인 쉬운거 (node.js)

문제 코드let fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().split("\n");input.shift();const data = input.map((value) => +value.split(" ")[1]);// 높이가 줄어들때마다 pop() 하면서 count 올려줌 -> stack의 맨 위의 값이 햔재 값보다 작을때까지// 현재 높이가 0보다 크고, stack이 비어있거나, stack의 맨 위의 값보다 현재 값이 클 때 push()// 배열을 다 돌았는데 stack에 값이 남아있다면 남아있는 만큼 count 늘려줌// 높이가 같다면 같은 건물일 수도 있기 때문에 push 안함let stack = [];let count ..

알고리즘 2024.06.10

next 이미지 최적화하기

오늘은 cloudy를 개발하면서 작성해 두었던 노션을 바탕으로 이미지 최적화 시도 경험을 작성해보려고 한다! 우선 당연히 이미지는 img 태그를 사용했었다. 와 근데 렌더링 속도가 너무 느렸다. 진짜 농담이 아니라 드드드득.. 한 2초 정도 걸렸던 것 같다.  그래서 lighthouse를 통해서 분석해 봤는데 두둥,, 저 빨간색 글씨인 Largest Contentful Paint를 보면 약 8.3초가 걸린다고 나와있다. 너무 느리게 측정된 이유는 public안에 있는 이미지를 가져와서 그렇고 cdn이 설정된 이미지를 가져왔을 때는 2.4초로 측정되었다. 그래도 빨간색 글씨로 표시되었다! LCP(Largest Contentful Paint)?로딩 성능을 측정하는 지표로서, 페이지가 처음으로 로드를 시작한..

성능 최적화 2024.06.07

티스토리 검색 엔진에 등록하기 (google, naver)

오늘은 내가 쓴 글이 구글과 네이버에 더 잘 노출될 수 있도록 검색 엔진에 내 블로그를 등록할 것이다! 어디에? 1. google search console(https://search.google.com/)2. naver search advisor(https://searchadvisor.naver.com/) google search console에 등록 1. 티스토리 관리 - 플러그인 - 구글 서치 콘솔 2. 계정 연결하기 - 연결 후 적용3. 다시 구글 서치콘솔 선택 - (바로가기) 선택 그러면 google search console로 페이지가 이동된다.4. Sitemaps 메뉴 선택 - 새 사이트맵 추가에서 rss 입력 - 제출 제출 후에 가져올 수 없음이라고 뜨는데 당황하지 않고 기다리다 보면 성공..

etc 2024.06.03

javascript로 코딩테스트 준비하기

작년 6월 싸피에 들어온 후 알고리즘 공부를 제대로 해봤던 것 같다.그때 당시에는 알고리즘만 했기 때문에 자바로 알고리즘을 푸는 것에 별 어려움을 느끼진 않았었다.근데 프로젝트를 시작하고 나서 react, vue만 사용하기 시작하면서 개발은 자바스크립트, 알고리즘은 자바로 하다 보니 어느 것 하나 제대로 공부하고 있지 못한다는 생각이 들었다.. 그래서 싸피가 끝난 지금!! 자바스크립트로 알고리즘을 시작해보려고 한다!! 프로그래머스로 시작해 보자! 사실 알고리즘하면 백준이지만 자바스크립트가 백준에는 없기도 하고.. 기업들도 요새 프로그래머스를 통해 코딩테스트를 진행하기도 하니 프로그래머스를 선택했다. 후에 PCCP라는 프로그래머스 인증시험을 취득하는 것도 목표다. 그렇다면 공부 순서는 어떻게 할까? 코딩 ..

etc 2024.05.28

npm에서 pnpm으로 마이그레이션 하기

프로젝트를 할 때 항상 프론트는 빌드 속도와 배포 속도가 느렸다. 16초 걸릴 때도 있었다... ㄷㄷ이번 프로젝트를 할 때 한주 팀장님이 pnpm에 대해 알려주어서 한번 적용해 보기로 해봤다! pnpm이 뭔지 설명하기에 앞서패키지 매니저?패키지 매니저란 개발에 필요한 다양한 패키지를 설치하고 또 수정하고 업데이트하는 등의 작업을 편리하게 도와주는 도구다. 프로젝트에 필요한 외부 라이브러리, 모듈, 플러그인 등을 손쉽게 설치하고 관리하는 역할을 한다. 즉, 의존성 관리 도구라고 생각하면 된다.대표적으로 지금까지 내가 사용해 왔던 npm, yarn 등이 있다. pnpm 역시 패키지 매니저이다!!   pnpm?pnpm은 npm의 의존성 문제를 해결한 패키지 매니저다. npm과 달리 의존성을 공유하여 저장 공간..

성능 최적화 2024.05.27

git 프로젝트의 languages에서 특정 언어 제외하기

프로젝트가 끝난 후 미러링을 했는데 뜬금없이 Jupyter Notebook이 메인 언어로 설정되어 있었다.분명 웹 프로젝트인데..!     위에 처럼 Jupyter Notebook이 86% ?!??!그래서 프로젝트 언어 통계에서 특정 파일을 인식하지 않게 하는 방법을 찾게 되었다.  .gitattributes 파일 생성 .gitattributes 파일의 linguist-detectable 속성을 사용하면 github에서 인식되지 않는 파일로 지정할 수 있다.*.ipynb linguist-detectable=false   결과  오 드디어 자바랑 타입스크립트가 나왔다 !!

git 2024.05.25

gitlab repository github으로 미러링하기

프로젝트가 끝나서 GitLab에 있는 레퍼지토리를 내 Github으로 미러링하고 싶었다. 미러링을 하면 잔디까지 그대로 가지고 올 수 있다 ! 1. gitlab repository clone git clone 레포주소 레포이름 2. clone 받은 repository로 이동 cd 레포이름 3. 미러링하기 git push --mirror git레포주소 미러링 실패 원인 push declined due to repository rule violations 에러가 나면서 미러링에 실패했었는데 gitlab에서 master와 develop을 제외한 branch를 모두 삭제해주니까 해결되었다. 🌱 잔디 심기 완료

git 2024.04.09