일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SSR
- 호이스팅
- recoil
- 타입 좁히기
- 공변성
- TS
- RTK Query
- React
- 태그된 유니온
- ESlint
- 이분 검색
- 무한 스크롤
- tailwind
- 인터섹션
- 리터럴 타입
- 투포인터
- autosize
- 결정 알고리즘
- useAppDispatch
- CORS
- Cypress
- webpack
- map
- Jest
- Promise
- CI/CD
- 반공변성
- dfs
- app router
- async/await
- Today
- Total
목록전체 글 (510)
짧은코딩
해결법 이 문제도 보텀업 방식으로 푸는 문제이다. 리스트 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에서 (옆옆..
비효율적으로 푼 내 풀이 #내가 풀어본 비효율적인 방식 from collections import deque x = int(input()) answer = 0 q = deque([(x, 0), (x-1, 1)]) while True: t = q.popleft() nx = t[0] count = t[1] if nx == 1: answer = count break if (nx % 5) == 0: q.append((nx // 5, count+1)) q.append(((nx // 5) - 1, count+2)) if (nx % 3) == 0: q.append(((nx // 3) - 1, count+2)) if (nx % 2) == 0: q.append(((nx // 2) - 1, count+2)) print(a..
헤더 -Home.js import { useState } from "react"; import MyHeader from "../components/MyHeader"; import MyButton from "../components/MyButton"; const Home = () => { const [curDate, setCurDate] = useState(new Date()); // month는 1월이 0월로 표시되기 때뮨에 +1 해줘야 한다. const headText = `${curDate.getFullYear()}년 ${curDate.getMonth() + 1}월`; // 오른쪽 버튼 누르면 1달씩 증가 const increaseMonth = () => { setCurDate( new Date(cu..