일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 그리디
- 투포인터
- textarea autosize
- 슬라이딩윈도우
- 알고리즘
- 정렬
- aws lightsail
- isNaN
- cookie
- 블로그만들기
- 큐
- 라이프사이클
- js알고리즘
- nestjs
- NextAuth
- 스택
- styled-components
- tailwindcss
- typscript
- JavaScript
- 버블정렬
- nextjs
- 해쉬
- TypeScript
- never타입
- react-query
- react
- next.js
- Algorithm
- 빅오
- Today
- Total
목록분류 전체보기 (114)
far
회의실 배정 한 개의 회의실이 있는데 이를 사용하고자 하는 n개의 회의들에 대하여 회의실 사용표를 만들려고 한다. 각 회의에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대수의 회의를 찾아라. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 입력설명 첫째 줄에 회의의 수 n(1{ if(a[1]===b[1]) return a[0]-b[0]; else return a[1]-b[1]; }) let et=0; for(let x of meeting){ if(x[0]>=et){ answer++; et=x[1]; } } return answer; } let arr=[[1, 4], [2, 3], [..
프로젝트중 websocket을 도입해보자는 말이 나와서 Sock.js와 Stomp.js를 사용해 실시간 채팅을 구현해봤다. Sock.js Sock.js는 클라이언트와 서버간의 연결을 유지하며 양방향 통신을 가능하게 해주는 websocket과 비슷한 기능의 Javascript 라이브러리다. 프로젝트에서 Sock.js를 선택한 이유는 두가지가 있다. 첫째로, Sock.js는 크로스 브라우징을 지원하는 API이며, websocket 프로토콜을 지원하지 않는 브라우저의 경우 자동으로 Streaming, Long-Polling 같은 HTTP 기반의 다른 기술로 전환해 연결해준다. 둘째로, SpringBoot를 사용해 웹소켓을 구현할 경우 Sock.js를 사용하는게 일반적이라는 글을 읽기도 했고, Stomp.js를..
textarea의 autosize를 구현하는데 계속 스크롤이 위로 올라가는 현상이 발생했다. 스크롤 이벤트 자체를 textarea에만 사용했기에 코드가 꼬인것도 아닌데 왜 이상하게 작동이 됐을까? const textareaResize = (event) => { event.style.height = 'auto'; event.style.height = (event.scrollHeight) + 'px'; } 내가 처음 사용했던 식이다. 당연히 script 부분이 잘못 됐을거라 생각해 식을 아래와 같이 수정했다. const textareaResize = (event) => { let scrollTop = event.scrollTop event.style.height = 'auto'; event.style.hei..
과거에 만들었던 개인 프로젝트를 보다 보니까 내가 사용하면서도 UX가 안좋다는 생각이 들 정도로 불필요한 링크 이동이 있었다. 그래서 조금이라도 UX적으로 좋게 만들기 위해 간단한 정보들은 링크 이동 대신 모달창을 사용해 정보를 보여주기로 했다. 여태까지 모달창은 Bootstrap이나 TailwindCSS에서 등에서 제공하는 걸 사용해 왔는데, 바꾸는 김에 내가 만들어보는 것도 나쁘지 않겠다고 생각해 작업을 해보았다. index.tsx // 설명하는데 불필요한 코드는 전부 생략했다. import Project from '../components/Project'; import Aco from '../components/Aco'; export default function Home() { const [mod..
Next.js는 태그를 사용해 이미지를 삽입하게 되는데 가끔씩 Image with src has either width or height modified, but not the other. If you use CSS to change the size of your image, also include the styles 'width: "auto"' or 'height: "auto"' to maintain the aspect ratio. 라는 warning이 뜬다. 문제를 해결하지 않아도 작동은 되지만, 에러가 많이 쌓이면 성능에 문제가 있을수도 있고 console창에 계속 에러가 뜨기 때문에 해결하는 방법을 알고 있으면 좋다. images.tsx const Images = () => { return ( )..
Checkbox와 API를 연결할 때 첫 클릭시 Boolean이 전환되지 않는 경우가 생겼는데, 생각보다 해결이 안돼서 애를 먹었다. tsx파일 // Checkbox 부분을 제외한 나머지 전부 생략 // props로 todo 데이터를 받아오는 상황 const TodoList = ({ todo }) => { const [isCheck, setIsCheck] = useState(todo.isCompleted); // 서버로부터 boolean값을 받음 const todoCheckbox = useCallback(() => { setIsCheck(!isCheck); }, [isCheck]); useEffect(() => { axios({ // ... 생략 data: { isCompleted: isCheck, },..
좌표 정렬 N개의 평면상의 좌표(x, y)가 주어지면 모든 좌표를 오름차순으로 정렬하는 프로그램을 작성하세요. 정렬기준은 먼저 x값의 의해서 정렬하고, x값이 같을 경우 y값에 의해 정렬합니다. 입력설명 첫째 줄에 좌표의 개수인 N(3
장난꾸러기 현수 새 학기가 시작되었습니다. 현수는 새 짝꿍을 만나 너무 신이 났습니다. 현수네 반에는 N명의 학생들이 있습니다. 선생님은 반 학생들에게 반 번호를 정해 주기 위해 운동장에 반 학생들을 키가 가장 작은 학생부터 일렬로 키순으로 세웠습니다. 제일 앞에 가장 작은 학생부터 반 번호를 1번부터 N번까지 부여합니다. 현수는 짝꿍보다 키가 큽니다. 그런데 현수가 앞 번호를 받고 싶어 짝꿍과 자리를 바꿨습니다. 선생님은 이 사실을 모르고 학생들에게 서있는 순서대로 번호를 부여했습니다. 현수와 짝꿍이 자리를 바꾼 반 학생들의 일렬로 서있는 키 정보가 주어질 때 현수가 받은 번호와 현수 짝꿍이 받은 번호를 차례로 출력하는 프로그램을 작성하세요. 입력설명 첫 번째 줄에 자연수 N(5
Least Recently Used 캐시메모리는 CPU와 주기억장치(DRAM) 사이의 고속의 임시 메모리로서 CPU가 처리할 작업을 저장해 놓았다가 필요할 바로 사용해서 처리속도를 높이는 장치이다. 워낙 비싸고 용량이 작아 효율적으로 사용해야 한다. 철수의 컴퓨터는 캐시메모리 사용 규칙이 LRU 알고리즘을 따른다. LRU 알고리즘은 Least Recently Used 의 약자로 직역하자면 가장 최근에 사용되지 않은 것 정도의 의미를 가지고 있습니다. 캐시에서 작업을 제거할 때 가장 오랫동안 사용하지 않은 것을 제거하겠다는 알고리즘입니다. 만약 캐시의 사이즈가 5이고 작업이 | 2 | 3 | 1 | 6 | 7 | 순으로 저장되어 있다면, (맨 앞이 가장 최근에 쓰인 작업이고, 맨 뒤는 가장 오랫동안 쓰이지..
삽입 정렬 N개의 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요. 정렬하는 방법은 삽입정렬입니다. 입력설명 첫 번째 줄에 자연수 N(1 tmp) { arr[j+1] = arr[j]; } else { break } } arr[j+1] = tmp } return answer; } let arr=[11, 7, 5, 6, 10, 9]; console.log(solution(arr)); 삽입 정렬이란 배열의 요소를 차례대로 이미 정렬된 배열과 비교해 올바른 위치를 찾아 삽입하는 방법이다. i가 커질 때 마다 j는 뒤에서부터 배열을 검사한다. 그리고 arr[j]가 tmp보다 크다면 순서가 잘못됐다는 얘기니까 arr[j+1]자리에 arr[j]를 삽입한다. 이걸 반복문이 끝날 때 까지 진행한다. ..