일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- async/await
- ESlint
- 투포인터
- RTK Query
- 태그된 유니온
- autosize
- tailwind
- CI/CD
- CORS
- 타입 좁히기
- 인증/인가
- TS
- app router
- 인터섹션
- React
- useAppDispatch
- 반공변성
- 공변성
- MSA
- 호이스팅
- SSR
- 무한 스크롤
- webpack
- Promise
- 리터럴 타입
- Jest
- dfs
- map
- recoil
- 결정 알고리즘
- Today
- Total
목록전체 글 (522)
짧은코딩

글 추가 이렇게 글 2개를 추가하면 id가 같은 일기가 생성된다. -에러 Encountered two children with the same key 이런 버그를 만나면 key가 여러 개 존재한다는 것이다. 테스트해보는 dummy data를 사용할 때 자주 발생한다. -App.js const dataId = useRef(6); dummy data가 5개 있었으니까 초기값을 6을 줘야 에러가 발생하지 않는다. 최신순 정렬에서 글 추가하면 정렬 안되는 버그 이건 놀랍게도 오타 때문이었다. TypeScript는 이런 오타를 해결할 수 있다고 한다. -DiaryList.js const [sortType, setSortType] = useState("latest"); latest가 아닌 lastest라고 썼다. ..

gitignore 깃허브 데스크탑에 .DS_Store라는 임시파일이 있다. 이건 맥os에서 만든 파일이다. 맥이나 윈도우에는 보이지 않는 임시파일이 있다. 따라서 업로드 하고 싶지 않으면 체크를 안하면 되는데 모든 커밋에서 이 파일을 업로드 하고 싶지 않다고 기억을 해야한다. => 이럴 경우에는 .gitignore를 만들면 된다. '.gitignore'는 무시하고 싶은 파일 이름을 기록하는 파일이다. .DS_Store 이렇게 쓰고 저장하면 커밋 창에서 .DS_Store가 사라진다. 어떤 폴더라도 무시가 가능하다. BEM(Block Element Modifier) 좀 더 쉽게 읽히는 css를 가진다. https://css-tricks.com/bem-101/ BEM 101 | CSS-Tricks The fo..

해결법 이 문제도 보텀업 방식으로 푸는 문제이다. 리스트 d에 작은 수부터 체크하면서 푼다. 이 문제의 핵심 풀이 방식은 지금의 숫자와 비교했을 때, 동전의 숫자만큼 뺀 숫자가 존재하면 당연히 동전 수만큼 더한 수도 존재한다는 것이다. 풀이 n, m = map(int, input().split()) ary = [] for i in range(n): ary.append(int(input())) d = [10001] * (m+1) d[0] = 0 # 동전 수만큼 반복 for i in range(n): # 가장 작은 동전 수부터 구하려는 목표 수까지 반복 for j in range(ary[i], m+1): # (i-k)원을 만들 수 있으면 if d[j - ary[i]] != 10001: d[j] = min(d..

같은 함수를 여러 번 사용할 때 src에 util이라는 파일을 하나 만든다. 그리고 date.js로 파일을 만들고 // 처음부터 오늘의 날짜가 오게 해주기 위한 기능 export const getStringDate = (date) => { // 0~9까지 잘라준다. return date.toISOString().slice(0, 10); }; 반드시 앞에 export를 쓰고나서 중복해서 사용 하는 함수를 저장한다. 그 후에 중복 사용하는 파일에 가서 import { getStringDate } from "../util/date.js"; import를 한다. 헤더 데이터 가져오기 import { useContext, useState } from "react"; import { useNavigate, useP..

App.js 우선 App.js에서 경로를 수정한다. path="/edit/:id"로 해야 /1이 붙어도 잘 나온다. Edit.js import { useContext, useEffect, useState } from "react"; import { useNavigate, useParams } from "react-router-dom"; import { DiaryStateContext } from "../App"; import DiaryEditor from "../components/DiaryEditor"; const Edit = () => { const navigate = useNavigate(); // id 불러오기 위한 useParanms const { id } = useParams(); // tar..

다이나믹 프로그래밍은 종종 결과가 너무 클 수 있어서 어떤 수로 나눠서 출력하라고 한다. 풀이법 -N이 3일 때의 예시 1. N이 3이고, i-1번째 즉, 2번 칸까지 채워져 있으면 경우에 수는 1개이다. 2. i-2번째 즉, 1번 칸까지 채워져 있으면 경우의 수는 2가지이다. -점화식 따라서 점화식은 이렇게 구할 수 있다. 풀이 n = int(input()) d = [0] * 1001 d[1] = 1 d[2] = 3 for i in range(3, n + 1): d[i] = (d[i-1] + d[i-2] * 2) % 796796 print(d[n]) 점화식에 맞게 코딩을 했다. 이 문제의 풀이도 처음엔 생각하지 못했다. 다이나믹 프로그램을 코딩하면 쉽지만 점화식 같은 풀이를 생각하는 것이 어렵다. 앞으..

Git git은 파일의 변경 내역을 계속해서 추적해주는 version control system이다. Github github은 파일 내역과 파일들을 올려주는 공간이다. commit은 기본적으로 시점이다. history에 들어가 보면 빨간색과 초록색이 나오는데 빨간색은 이전 코드이고 초록색은 변경된 코드이다. => 변경 사항을 쉽게 알 수 있다. Repository 1. 깃허브 홈페이지에서 repositroy를 만든다. 2. 깃허브 데스크탑에 가서 Clone a Tutorial Repository를 누르고 Local Path 경로를 설정하고 Clone한다. 3. 설정한 경로에 파일이 만들어져 있다. 4. vsc로 파일을 열고 README.md를 만들어 준다. README 파일은 모든 git reposit..
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 내 풀이(문제를 잘 읽자) n = int(input()) d = [0] * (10**6 + 1) for i in range(2, n+1): d[i] = d[i-1] + 1 if i % 3 == 0: d[i] = min(d[i], d[i//3] + 1) if i % 2 == 0: d[i] = min(d[i], d[i//2] + 1) print(d[n]) 이 문제도 어제 "이것이 취업을 위한 코딩테스트다"에서 푼 문제와 굉장히 유사하다. 사실 처음엔 풀지 못해서 어제 공부한 것을 다시 봤다. 그리고 나중에 풀었는데..

헤더 및 오늘 날짜 -new.js import { useState } from "react"; import { useNavigate } from "react-router-dom"; import MyHeader from "./../components/MyHeader"; import MyButton from "./../components/MyButton"; // 처음부터 오늘의 날짜가 오게 해주기 위한 기능 const getStringDate = (date) => { // 0~9까지 잘라준다. return date.toISOString().slice(0, 10); }; const New = () => { const [date, setDate] = useState(getStringDate(new Date())..

교재 풀이 이렇게 바로 옆을 털면 지금 창고를 털지 못한다. 그리고 2번 떨어진 창고를 털면 지금 창고를 털 수 있다. 따라서 바로 옆 창고 vs (옆옆 창고 + 현재 창고) 이렇게 비교해서 더 큰 값을 찾아야 한다. n = int(input()) ary = list(map(int, input().split())) d = [0] * 100 d[0] = ary[0] d[1] = max(ary[0], ary[1]) for i in range(2, n): d[i] = max(d[i-1], d[i - 2] + ary[i]) print(d[n-1]) 이런 풀이가 나온다. 위에서 설명했듯이 옆 창고 vs (옆옆 창고 + 현재 창고)를 비교하면서 푸는 문제이다. 이 문제를 다시 풀면서 for문 안에 max에서 (옆옆..