Today Sangmin Learned
article thumbnail
[Next.js] 다이나믹 라우트(Dynamic Routes)
Web/Next.js 2021. 7. 20. 21:46

[pid].tsx import { useRouter } from "next/router"; const Post = () => { const router = useRouter(); const { pid } = router.query; return Post: {pid}; }; export default Post; Next.js에서 기본적으로 router 설정을 useRouter를 한 뒤에, 저렇게 pid를 라우터의 쿼리로 설정할 경우.. 예를 들어 1. '/post/abc' 라우트인 경우: { "pid": "abc" } 의 쿼리 객체를 가진다. 2. '/post/abc?foo=bar' 라우트의 경우 { "foo": "bar", "pid": "abc" } 의 쿼리 객체를 가진다. 그러나, 쿼리 파라미터를 동일..

article thumbnail
[Python] BOJ(백준) 1744번 - 수 묶기
CS/알고리즘 2021. 7. 19. 13:34

링크 https://www.acmicpc.net/problem/1744 난이도(solved.ac 참고) 골드4 추가로 시도해보면 좋은 반례 입력 6 1 1 1 1 1 1 추가로 시도해보면 좋은 반례 출력 6 풀이 이 문제를 풀 때 내가 기본적으로 생각했던 것 1. 양수는 1개 남을때까지 전부 2개씩 묶어서 곱해주고, 마지막 하나는 더해준다. 2. 음수는 역으로 sort한 뒤 전체 음수가 홀수개라면 1개 남을때까지 전부 2개씩 묶어서 곱해주고, 마지막 하나는 더해준다. 2-1. 짝수개라면 전부 묶어서 곱해준다. 3. 그리고, 매 if문이 끝날 때마다 두 원소를 모두 pop해줬고, 그에 맞춰 감소하는 빈도도 -2로 맞췄다. 왜냐면 매 반복문을 돌때마다 값이 두개씩 사라지니까. 4. 0은? 일단 고려 안했음 ..

article thumbnail
[Python] BOJ(백준) 2606번 - 바이러스
CS/알고리즘 2021. 7. 19. 10:41

링크 https://www.acmicpc.net/problem/2606 난이도(solved.ac 참고) 실버3 풀이 흠 ㅋㅋ 걍 인접리스트 만들고, BFS 돌리면서 큐가 있으면 1 더해주면 되는.. 쉬운문제였다. 근데 인덱스 에러가 나길래 왜 나지 했는데.. visited의 개수가 잘못되었었다. 기존 C에서 C+1로 바꿔주니 해결되었다.

[Python] BOJ(백준) 11501번 - 주식
CS/알고리즘 2021. 7. 18. 20:37

링크 https://www.acmicpc.net/problem/11501 난이도(solved.ac 참고) 실버3 풀이 뒤에서부터 보자! b_max라는 변수에 리스트의 마지막 값으로 일단 두고 마지막에서 처음까지 도는 반복문에서 더 큰 것이 있으면 바꿔주고, 없으면 마지막 값에서 인덱스의 값을 빼준 만큼 이익에 더해주면 된다.

[Python] BOJ(백준) 2075번 - N번째 큰 수
CS/알고리즘 2021. 7. 18. 19:53

링크 https://www.acmicpc.net/problem/2075 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 난이도(solved.ac 참고) 골드5 풀이 메모리 제한이 없다면, 걍 실버급도 안되는 문제라고 생각했다. 처음에 그냥 input값 받은 것들 전부 하나로 합친 다음에 거기서 n-1번째 인덱스를 추출하면 되지 않나? 라고 생각해서 바로 제출했는데 역시 메모리 초과가 떴다. 하기야 그렇게 풀 수 있으면 이게 골드 5일수가 없지.. 메모리가 초과된다는 건, 결국 저장되는? 값이 많다는 얘기라고 생각한다..

article thumbnail
[Python] BOJ(백준) 11497번 - 통나무 건너뛰기
CS/알고리즘 2021. 7. 18. 17:12

링크 https://www.acmicpc.net/problem/11497 난이도(solved.ac 참고) 실버1 풀이 이 문제는 결국 가장 큰 게 중앙에 오고, 다음으로 큰 값들이 왼쪽오른쪽에 차례차례 들어오게 한 뒤에 max값과 양 옆 인덱스와의 차이 중 큰 값을 출력하면 되는 것이다. 예를 들면 9 -> 7 9 -> 7 9 5 -> 4 7 9 5 -> 4 7 9 5 2 이런 식으로 말이다. 이렇게 만든 뒤에 (9-7)과 (9-5)를 비교해서 더 큰 4가 출력되는 것이다. 아이디어 자체는 보자마자 떠올렸는데, 오히려 구현에 시간이 좀 들었다;; 근데 .. 풀고 나서 다른 사람들 코드를 보니까, 너무 쉽게 풀었던데..? 역시 효율성은 개나줘버린 코드답다 나의 코드(오답) 최대값 인덱스를 구해서, 양 옆의..

[Python] BOJ(백준) 18870번 - 좌표 압축
CS/알고리즘 2021. 7. 17. 20:21

링크 https://www.acmicpc.net/problem/18870 난이도(solved.ac 참고) 실버2 풀이 set 자료형(집합)은 중복된 값을 제거한다. 제거한 값을 리스트로 변환한 뒤에 그 값을 key(a2[i]):value(i)의 형태로 for문을 돌면서 딕셔너리 형태로 만들었다. 이렇게 되면 결과값은 예제 입력을 넣었을 때 {-10: 0, -9: 1, 2: 2, 4: 3} 가 된다. 여기서 우리가 뽑아내야 할 값은 0, 1, 2, 3이다. 우리가 input 값으로 받은 a 배열에 대해 딕셔너리에서 해당하는 부분의 value를 리턴하면 되는 문제였다. set과 딕셔너리에 대한 개념이 없다면 못푸는 문제였다.

[Python] BOJ(백준) 10026번 - 적록색약
CS/알고리즘 2021. 7. 15. 15:40

링크 https://www.acmicpc.net/problem/10026 난이도(solved.ac 참고) 골드5 풀이 색약자가 아닌 경우에 일반적인 BFS를 진행하여 visited를 사용하고, 그다음 색약자에 대한 조건을 설정한 후(R을 G로 바꾸기) visited를 다시 초기화한 뒤 BFS를 진행했다. BFS에서 x,y좌표를 움직였을 때 그 부분이 방문되지 않았고(not visited) 이전 값과 같은 경우(둘다 R이거나 둘다 G이거나 둘다 B이거나) 큐에 넣고 방문처리를 한 뒤(visited[nx][ny] = True) 다시 반복문을 돌았다.

article thumbnail
2021-2Q Retrospect 🤔
회고록, 목표 2021. 7. 14. 10:36

7월 초에 팀원들이랑 모여서 진행했지만, 포스팅은 지금 한다 😂 2Q에 한 것 1. 종합설계 - 카카오 로그인/로그아웃 구현 (localStorage 이용) - 프로젝트 폴더 구조에 대한 고찰 2. 동아리 - Django - CRUD - 작년에 Python을 갓 뗀 상태에서 배웠을 때보다 훨씬 이해가 잘 됨! 3. 알고리즘 - 수업을 통해 알고리즘 이론을 싹 훑었음 - 처음 시작했던지라 당연히 어려웠고, 피눈물 흘리면서 과제를 했다. 수업은 좋지 않았지만 강제성이 부여된 과제는 좋았다. - 백준 꾸준히 풀면서 내년에 있을 코딩테스트 준비중,, 4. 블로그 - 투데이가 매일 한 30~50씩 나오고 있다. 알고리즘과 React에 대한 글을 많이 쓴 덕분인 것 같다. - 최고 조회수 게시물 4개 React S..

article thumbnail
[React + TypeScript] DM 페이지와 ChatBox 만들기, DM 콘솔에 띄우기
Web 2021. 7. 13. 18:08

글이 너무 길어질 것 같아서 나눠서 포스팅한다. 채널과 DM 목록을 만들었으므로 이제 각 페이지 내부에서 실질적으로 사용되는 채팅을 구현하기 전 먼저 채팅 박스와 내부 스타일링 먼저 구현해본다. 그 이후에 콘솔에 내가 작성한 DM을 띄우는 것까지 해볼 예정이다. 이전과 마찬가지로, 코드부터 보고 시작한다. 1. DM 페이지 내부 1-1. 프로필(gravatar 사용) GitHub를 이용해본 사람이라면 이러한 이모티콘을 많이 봤을 것이다. 이 이모티콘은 gravatar에서 제공하는 것으로, 라이브러리를 다운받아서 import해오면 누구나 손쉽게 사용할 수 있다. gravatar.url(email, options); 이런식으로 불러와서 사용할 수 있다. 이메일은 필수 옵션이다! {userData.nickna..