PS
-
BOJ 5972 택배 배송PS 2024. 8. 2. 10:53
https://www.acmicpc.net/problem/5972 문제를 읽으면서 바로 다익스트라 문제다 라는 걸 알았다.그런데 문제 설명이 조금 난잡하다고 해야하나 복잡하다고 해야하나 그렇게 느껴졌었다.다익스트라를 약간 오랜만에 풀어서 처음에 살짝 헤맸는데, 금방 다시 잘 풀어낼 수 있었다.특별히 꼬거나 그런것도 없고 그냥 다익스트라로 풀어주면 된다.#include using namespace std;int n, m;int d[50004];int inf = 1000 * 50004;int a, b, c;vector> v[50004]; // {비용, 정점}int main(){ fill(d, d + 50004, inf); cin >> n >> m; for (int i = 0; i > a >>..
-
6.유저인증 - JWT - 로그인, 회원가입등을 만들어보자. - 서버 ++ 에러핸들링PS 2024. 8. 1. 15:19
https://www.youtube.com/watch?v=nvjYCK9oDRU&list=PLKhlp2qtUcSZsGkxAdgnPcHioRr-4guZf&index=9 먼저 라우터를 만들어주자. app.get('/api',(req,res) => {}) 이렇게 하는 것보다는 라우터로 분기해주는 게 훨씬 깔끔하니깐.음, 그리고 미리 양해를 구하지만 이 글은 어느정도 진행을 하고 나서 쓴 글이기 때문에 실제 작업 순서와는 약간 다를 수 있다. 그래서 코드에 나중에 만들어질 메서드 같은게 미리 들어있을 수 있다. backend/routes/userRouter.js를 만들어준다.// backend/routes/userRoutes.jsconst express = require("express");const { reg..
-
BOJ 14719 빗물PS 2024. 8. 1. 10:07
https://www.acmicpc.net/problem/14719 재밌는 문제였다. 문제를 낸 방식도 재밌고, 생각하는 것도 재밌었다.처음 생각했던건 2차원 그래프를 그리면 어떨까 했다.빈공간은 0, 벽은 1그래서0 0 11 0 11 1 1뭐 이런식으로 해서 세어주는 식으로 하면 되지 않을까 싶었다.그러면 어떻게 세어줘야 할까 생각하다가,처음 벽이 세워지고 그 다음 벽이있는 곳까지의 개수를 세어주면 된다는 걸 알았고,그렇다면 왼쪽에서 오른쪽으로 이동하는 걸 세면 되는데,위에서부터 0이 될때까지 내려가면 된다는 걸 알았다.그렇다면 굳이 2차원 배열을 만들 필요도 없이 왼쪽에서 오른쪽으로 가며, 왼쪽 수보다 작은 수의 개수를 세다가 큰수가 나오면 잠깐 멈추고 뭐 이런거를 생각했었다. 그러니깐 오큰수 문제..
-
BOJ 20437 - 문자열 게임2PS 2024. 7. 31. 09:26
https://www.acmicpc.net/problem/20437 생각한대로 풀려서 기분이 너무 좋았다. findLongestSubArray문제를 풀어봤던 것이 도움이 됐다. 알파벳이 몇개 나왔나 카운트 하는 배열이 있고,어떤 글자가 어떤 인덱스에 나왔다 저장하는 벡터 배열을 만든다.vector loc[30]; // 어떤 글자가 나온 인덱스들을 저장 ex) a가 2, 5, 8번 인덱스에 나왔다면 loc[0] = {2,5,8}; 그리고 글자수를 돌아가며 카운트를 세고, loc에 각각 나온 인덱스를 저장해준다.그러다가 카운트가 k개 이상이 나오면, 현재 인덱스와 loc의 마지막에서 k개만큼 빼주면, k개 이전의 인덱스가 나온다.그럼 이제 현재 인덱스 - 이전에 같은 글자가 나왔던 인덱스 + 1을 해..
-
BOJ 15989 - 1, 2, 3 더하기 4PS 2024. 7. 30. 08:32
https://www.acmicpc.net/problem/15989 어떻게 풀어야 할지 굉장히 고민을 많이 했던 문제.처음엔 완전탐색, 백트래킹으로 풀려고 했었고 그럼 중복처리 ((1+1+2, 1+2+1)을 같은걸로 처리해야함.)를 어떻게 처리해야 하나 고민하다가 배열을 3차원으로 만들어서 쓴 숫자들을 중복처리해줘야 하나도 고민을 해줬지만, 그렇게 한다면 메모리를 너무 많이 차지해서 안됬다.이런저런 고민을 하다가 결국 다른분들이 푼 방법을 봤는데, 생각보다 너무 간단했다.냅색 문제 풀듯이 푸는데, 이게 보통 냅색문제가 숫자 몇을 만드려고 하는데 이때 최소 동전 몇개를 써야하냐 이런식인 경우가 많았던 것 같은데, 이 문제는 그게 아니라 숫자 몇을 만드는데 경우의 수가 몇개가 필요하냐 뭐 이런식이었다.그래서..
-
BOJ 12919 A와 B 2PS 2024. 7. 23. 01:48
https://www.acmicpc.net/problem/12919 백트래킹으로 풀었다.시간을 줄이기 위한 대 똥꼬쑈#include using namespace std;string s, t;bool flag = false;map mp;int tACnt;int tBCnt;int seqA;int seqB;int tmpSeqA;int tmpSeqB;int cntA(string str){ int cnt = 0; int tmp = 0; int tmp2 = 0; tmpSeqA = 0; tmpSeqB = 0; for (int i = 0; i t.size()) { return; } if (str == t) { flag = true; ..
-
7. Optimistic UpdatePS 2024. 7. 22. 21:13
https://www.youtube.com/watch?v=-xXASlyU0Ck&t=2007s를 보며 실습하는 영상 ---저번에 메세지를 데이터베이스에 저장하고 표시하는 것까지 해줬다. 아직 소켓통신을 하지 않기에 데이터를 인서트하고 새로고침을 하고 데이터를 다시 받아와야지 내가 입력한 메세지가 나온다.그런데, 이렇게 데이터를 입력하고 다시 받아오기까지 시간이 좀 걸리기에, 내가 이런 이런 입력을 하면 당연히 DB에 저장될 걸로 가정하고, 내 화면에 바로 입력값을 표시해주는 방법이 있다. optimistic update라고 하는데 https://react.dev/reference/react/useOptimistic useOptimistic – ReactThe library for web and native..
-
BOJ 9655 돌게임PS 2024. 7. 11. 22:11
https://www.acmicpc.net/problem/9655 정말 멍청한 실수때문에 시간을 너무 많이 날렸다.dp테이블을 채워줄 때, 반복문을 돌며 dp[i]=어쩌고 이렇게 채워줘야 하는걸dp[n] = 어쩌고 계속 이렇게 썼으니, 답이 나올리가,,, 오늘 상태가 메롱인가... 그림까지 그려가며 했는데. 집중력이 떨어지는 날인 것 같다. 위 처럼 이상하게 해놓고, 답이 안맞는다고 한참 고민하다가 검색을 좀 해봤는데, 이거에 대해 잘 설명해주신 유튜브를 보게 되었다.위 유튜브를 보고나서도 저 어처구니 없는 오타를 찾지 못해 한참헤매긴 했었지만,,유튜브 영상을 남겨놓는다.https://www.youtube.com/watch?v=iEmyvafn8FA&t=665s