[백준/JS] 1946 신입사원
문제링크: https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 정렬 + 그리디 문제이다. 첫번째 점수를 기준으로 정렬을 하고, 순회하면서 두번째 점수가 더 작은 값일때 count 를 하면된다. 1. 서류심사 성적을 기준으로 정렬을 한다. 2. target 이라는 Number.MAX_SAFE_INTEGER 를 저장한 변수를 생성한다. 2-1. if (target > 두번째 점수) 를 만족할 경우 target 을 갱신하고 coun..
[백준/JS] 5052 전화번호 목록
문제링크: https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 문자열 + 배열 정렬 + 해쉬맵 으로 푼 문제이다. 프로그래머스에 비슷한 문제가 있었던 것 같다. 나는 해쉬맵에 번호를 저장하고, 다음 전화번호를 digit 하나씩 더하면서 합친 문자열이 해쉬맵에 있는지 확인하는 로직으로 문제를 해결했다. 위와 같은 로직을 사용하기위해서는 1. 우선 테스트 케이스 정렬을 해야한다. 1-1. 정렬하지 않는다면 91125426 , 9..
[백준/JS] 1026 보물
문제 링크: https://www.acmicpc.net/problem/1026 배열 문제이다. 1. 한쪽 배열은 asc 로 정렬한다. 2. 나머지 배열은 desc로 정렬한다. 3. 두배열의 인덱스를 0 ~ N 까지 곱하여 더한다. const fs = require('fs'); BOJkey = false; let input = fs .readFileSync(BOJkey ? './javascript/1026/input.txt' : './dev/stdin') .toString() .trim() .split('\n') .map(el => el.split(' ').map(Number)); const [N] = input.shift(); ascArr = input.shift().sort((a, b) => a - b..
[백준/JS] 1449 수리공 항승
문제링크: https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 그리디 문제이다. 프로그래머스에 똑같은 문제가 있다. 1. 수리해야하는 위치가 담긴 배열을 오름차순으로 정렬한다. 2. 테이프가 붙여진 위치를 저장한다. 2-1. 수리해야하는 위치가 [1, 2, 3, 4] 이고 테이프의 길이가 3(L) 이라고 하자. 테이프는 1(처음만난 수리지점) 부터 붙여나가야한다. 2-2. 이때 해당 테이프로 1 ,2 ,3 의 위치까지 커버가 가능하..
[백준/JS] 2661 좋은 수열
문제 링크: https://www.acmicpc.net/problem/2661 2661번: 좋은수열 첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다. www.acmicpc.net 백트레킹 문제였다. 1. dfs 를 사용하여 '1', '2', '3' 문자를 추가한다. 2. 좋은 수열인지 아닌지 판별한다. (checkDuplicate) 2-1. 예를 들어 123123 이라는 값이 들어왔다고 가정을 해보자. 2 3 31 23 123 123 맨뒤 인덱스-1 부터 에서 수열의 길이 / 2 까지 구간을 나누어 확인을 한다. 2-2. 위 방법을 사용할때 좋은 수열이 아닌 값들은 pru..
Glitch 에 json-server 배포한 과정
배경 이전에 작업해두었던 프로젝트를 시연하기위해서 서버가 필요했습니다. 같이 협업한 백엔드분들에게 서버를 켜달라고 부탁드리는 것은 다들 바쁘시기도 하고 분명히 에러가 날것이기때문에 귀한 시간을 잡아먹을 것이 뻔했습니다. 따라서 혼자서 해결할 수 있는 방법을 찾아보았습니다. 개발환경에서는 msw 나 json-server, promise 와 setTimeout 을 사용해 fakeAPI 를 구현하는 방법이 있지만, 현재 저는 github page 를 사용하여 웹을 배포할 생각이기 때문에 개발환경에서 api 요청을 하는 방식으로는 문제를 해결할 수 없었습니다. 해결할 수 있는 방법은 다음과 같았습니다. (더 많을 것으로 판단됩니다.) json-server 를 heroku에 배포하기 json-server 를 gl..
setState에 대해 고민했던 하루
사건의 발단 채팅방의 한분께서 위와 같은 질문을 해주셨다. 여러가지 답변이 오갔고 내가 똥답변을 해버렸다. 이때 까지만해도 setState 안의 함수를 넣는 형태인 함수형 업데이트를 사용하면 batching 이 발생하지 않고 setState 마다 리렌더가 발생할 것이라고 생각했었다. 하지만 아래의 코드를 돌려본 결과. 내 생각이 잘못되었다는 것을 알게되었다. import { useState } from "react"; import "./styles.css"; export default function App() { const [count, setCount] = useState(0); console.log("render"); return ( { setCount((c) => c + 1); setCount((..
[React Query] staleTime vs cacheTime
React Query 의 staleTime 과 cacheTime 에 대한 차이를 알려주는 좋은 글을 봤다. 하지만 글로만 읽으니 제대로 이해한 것이 맞는지 의심이 들어 직접 라이브러리를 만져가면서 익혀보기로 했다. 우선 참고자료에서 알려주신 내용은 다음과 같다. React Query의 라이프 사이클 A 쿼리 인스턴스가 mount 됨 네트워크에서 데이터를 fetch 하고 A라는 query key로 캐싱함. 이 데이터는 fresh 상태에서 staleTime(기본값 0) 이후 stale 상태로 변경됨 A 쿼리 인스턴스가 unmount 됨 캐쉬는 cacheTime (기본값 5min) 만큼 유지되다가 GC에 의해 삭제됨 만일 cacheTime 이 지나기 전에 A 쿼리 인스턴스가 새롭게 mount 되면, fetch..
진행중인 프로젝트에 스토리북 도입하기.
왜 스토리북을 도입하려고 하였나요? 내가 구현해야하는 UI이다. 그리고 아래 UI는 이미 구현해둔 UI 이다. 비슷하지만 조금다른 이 컴포넌트를 재활용하려고 했다. 하지만 HTML로 일일히 만들어둔 컴포넌트가 내가 원하는 형태인지 확인하는 과정이 귀찮았다. 이를 storybook을 사용했을 때 더 빠르게 확인이 가능하고 나는 확인된 컴포넌트로 UI를 완성만 하면 된다. 이러한 장점으로 인해 storybook을 도입하자 라고 판단하였다. Storybook 설치 프로젝트에 루트에서 다음 명령어를 실행시킨다. npx storybook init 그러면 루트에 .storybook 폴더와 src/stories 폴더가 생성된다. 나는 src/stories 폴더는 삭제했다. 그 이유는 각 컴포넌트 폴더안에 해당 컴포넌..
[우아한 테크코스 프리코스] 1차 탈락
탈락했다. 올해 나름 열심히 했다고 생각했는데, 아직까지는 누적된 공부량이 부족한가보다. 어디서 판별이 되었을까? 생각해보았을때 아마 자소서 부분에서 갈리지 않았나 싶다. 냉정하게 내 자소서를 다시보았을때 1년간 몰입했던 경험이 내가 생각하기에도 그리 매력적이지 않았던 것 같다. 마침 같이 공부하시는분들과 함께 결과를 확인하였고 내가 떨어져버려서 그분들께 축하한다고 제대로 말씀을 못드린 것 같아 아쉽다. 공부하면서 아직 노력에 대한 보상을 받아본적이 없어 최종코테만이라도 꼭 가고 싶었는데 그것도 허락이 되지않아 많이 속상했다. 할 수 없다! 더 열심히 하는 수 밖에, 나보다 잘하는 사람이 이렇게 많다는 것을 다시한번 느끼게 된다. 앞으로 탈락할 일이 얼마나 많은데 여기서 징징대고 있을 시간이 없다. 그러..