-
BOJ 2512 - 예산PS 2024. 8. 14. 21:41
https://www.acmicpc.net/problem/2512 2분 탐색으로 풀었다.오랜만에 2분탐색 문제를 풀어서 재밌었다.주의할 점은 출력을 '배정된 예산들 중 최댓값인 정수를 출력한다.' 는 것이다. 총 예산이 400이고, 지원요청이 100, 80, 95로 이 안에서 모든 예산을 지원할 수 있다고하자.이 때, 상한선을 130으로 해도 모두 지원가능한데, 어차피 최대 100만 지원하면 되므로 배정된 예산들 중 최대값인 정수는 100이 되고, 답은 100을 출력하면 된다. 만약 총예산이 더 적어서 상한을 90으로 해야한다면 90을 출력해야 한다. 오랜만에 2분탐색 문제를 풀어서 재밌었고, 문제를 읽자마자 2분탐색을 써야한다는 게 떠올라서 너무 좋았다.#include using namespace st..
-
13. 채팅방 프론트 - 그룹챗 만들기MERN Stack ChatApp 2024. 8. 13. 22:02
https://www.youtube.com/watch?v=kJfwjGQY99M&list=PLKhlp2qtUcSZsGkxAdgnPcHioRr-4guZf&index=12를 보며 하고있다. 그런데, 사실 이번 파트는 위 동영상을 거의 보지 않았다. 95%는 보지 않고, 그냥 디자인 참고랑, 어떤 기능을 하는지만 보고 만들고 있다.이유는 위 동영상이 나온 시기가 오래되서, 지금쓰는 기술과 맞지 않는다는 게 가장 큰 이유다. 나는 요즘 next.js로 뭘 만들고있는데, 위 동영상에서는 타입스크립트도 쓰지 않고, 자바스크립트 리액트로 만들고 있다. 리액트도 오래되서 서버액션이 없는 버전이고, 어떤 형식을 보내거나 할 때 validation 체크 등도 하지 않아서, nextJS 연습도 하고, zod등도 써볼겸 해서 ..
-
BOJ 17142 - 연구소 3PS 2024. 8. 13. 17:10
https://www.acmicpc.net/problem/17142 재밌는 문제였다. 처음 입력받을 때 바이러스의 위치들을 따로 저장해둔다.그리고 조합을 구해 어떤 바이러스들을 활성화시킬지 경우의 수를 뽑는다.뽑힌 경우의 수를 돌며 바이러스를 퍼뜨리기 시작하는데, 이때 bfs를 사용했다.그런데 일반적인 bfs를 도는 게 아니라, 층을 나눠주는 게 필요하다. 왜냐하면 큐에 여러개가 들어있는데, 1초가 지났을때, 2초가 지났을 때 이런식으로 구별이 필요하기 때문이다.그래서 while문 안에서 qSize를 받고, qSize만큼의 반복문이 끝나면 시간이 올라가게끔 구별해줬다.이걸 무슨 기법이라고 했는데, 이름은 까먹었다. 파티션 뭐 이런거였던 거 같은데어쨌든 이렇게 해주면서 시간을 비교해 최소시간을 출력해주면 ..
-
12. 채팅방 프론트. 로그인보완 (서버사이트 상태저장)MERN Stack ChatApp 2024. 8. 6. 22:01
https://www.youtube.com/watch?v=2JNL2JBgruI&t=3066s를 보며 만들고 있다.그런데 이번편에서는 틀은 이 동영상처럼 하지만 안의 내용은 좀 많이 다르게 할 것이다.왜냐면 나는 react가 아니라 nextjs로 앱을 만들고 있기도 하고,이 동영상이 나온지가 좀 됬다보니 좀 옛날 것들을 많이 사용하기도 했다. 지금은 거의 쓰이지 않는. 그래서 모양이나 틀은 이것과 비슷하게 갈거지만, 안의 내용은 다르게 만들어보겠다. 먼저 로그인 상태관리를 해주기위해 zustand를 인스톨 해준다.https://docs.pmnd.rs/zustand/getting-started/introduction Zustand DocumentationZustand is a small, fast and s..
-
11. 1:1 채팅방 API, 모든 내 대화방 가져오기, 그룹채팅방 만들기, 채팅방 이름 바꾸기MERN Stack ChatApp 2024. 8. 5. 17:43
https://www.youtube.com/watch?v=HArC6GxkMMI&list=PLKhlp2qtUcSZsGkxAdgnPcHioRr-4guZf&index=10 이번에는 1:1 채팅방 만들기를 하겠다.카톡이나 슬랙등에서 1:1 채팅을 해본 경험은 다들 있을 것이다.이 때, 기존의 채팅내역이 있다면 기존 채팅방을 불러오면 되지만, 없다면 새로운 1:1 채팅방을 만들게 된다.서버 => 라우터 => 컨트롤러 순으로 가겠다.// backend/server.jsconst express = require("express");const { chats } = require("./data/data");const dotenv = require("dotenv");const connectDB = require("./co..
-
10. AuthMiddlewareMERN Stack ChatApp 2024. 8. 5. 15:52
https://www.youtube.com/watch?v=HArC6GxkMMI&list=PLKhlp2qtUcSZsGkxAdgnPcHioRr-4guZf&index=10 다음으로 서버에 인증 미들웨어를 만든다. 인증이 필요한 부분으로 이동할 때, 지금 만드는 미들웨어를 거친다음 원하는 곳으로 가게끔 할 수 있다.지금만드는 건 인증이니깐 인증이 되야만 다음단계로 거치도록 할 수 있다. 미들웨어 안에서 req, res객체에 뭘 넣어줄수도 있고.만들고 사용하는 방법은 먼저 미들웨어를 만들고// backend/middleware/authMiddleward.jsconst jwt = require("jsonwebtoken");const User = require("../models/userModel.js");const..
-
9. Find Users APIMERN Stack ChatApp 2024. 8. 5. 14:50
유저들을 찾는 api.backend/routes/userRoutes.jsbackend/routes/userRoutes.js에router.route("/").get(allUsers) 추가.router.route("/").get(allUsers).post(registerUser);이런식으로 기존의 router.route("/").post(registerUser).get(메서드).patch(메서드) 이런식으로 붙여줘도 됨.backend/controller/userController.js에 메서드 추가const allUsers = asyncHandler(async (req, res) => { const keyword = req.query.search; const query = keyword ? { ..
-
8.LoginMERN Stack ChatApp 2024. 8. 5. 14:26
Signup과 마찬가지로 전면 개편했다.거의 비슷해서 딱히 설명할 내용은 없다.API Route방식이 아니라 Server Action방식으로만 해줬다. github : https://github.com/Wunhyeon/ChatApp-MERNStack/tree/8.frontSignin GitHub - Wunhyeon/ChatApp-MERNStackContribute to Wunhyeon/ChatApp-MERNStack development by creating an account on GitHub.github.com