목록2022/05/17 (10)
치춘짱베리굿나이스
2×n 타일링 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 풀이 const twoN = () => { let n = parseInt(require("fs").readFileSync("/dev/stdin").toString().trim()); let dp = Array.from({ length: n }, (v) => 0); dp[0] = 1; dp[1] = 2; for (let i = 2; i < n; i++) { dp[i..
RGB거리 문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. 입력 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,..
수들의 합 문제 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까? 입력 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. 출력 첫째 줄에 자연수 N의 최댓값을 출력한다. 풀이 const sum = () => { let s = parseInt(require("fs").readFileSync("/dev/stdin").toString().trim()); let sum = 0, i = 1, n = 0; while (true) { if (sum + i > s) break; sum += i; i++; n++; } console.log(n); }; sum(); 반성회 i를 1부터 1씩 늘려가면서 sum을 구한다 그러면 sum은 1 + 2 + 3 + ..
Zadanie próbne 2 문제 Wyobraźmy sobie przez chwilę, że w tym roku konkurs SKI'10 składa się z n punktowanych rund i jednej rundy próbnej. Ile zgodnie z regulaminem może się pojawić zadań w czasie całych zawodów? 입력 W pierwszej i jedynej linii znajduje się liczba naturalna n (1
폴리오미노 문제 민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB 이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다. 폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다. 출력 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. 풀이 const polio = () => { let str = require("fs").readFileSync("/dev/stdin").toString().trim(); let con = 0; const strlen = str..
코드리뷰 서론 초대손님 반갑습니다~~ 웹스톤을 쓰는 이유? 추천받아서..? 코드리뷰 #1 Route는 최대한 간단해야 한다 레이아웃은 최상위에 배치해서 래핑하는 것을 추천 기업 같은 경우 페이지가 30~40개급이 돼서 라우터가 무거워질 수록 라우터 구성이 매우 복잡해진다 React-loadable 기본 Lazy 기능도 좋지만 loadable을 쓰면 조금 더 깔끔할 것 코드를 최대한 깔끔하게 쓰자 && 연산자, || 연산자로 도배하는 것보다 if / else문, useMemo 사용하는 것을 추천 삼항연산자는 코드의 depth를 늘어나게 만든다 프론트엔드는 가독성이 중요 ⇒ 가독성을 신경쓰지 않으면 줄 수가 기하급수적으로 늘어난다 나중에 리팩토링 할 수 있으니 그걸 고려하자 공통컴포넌트로 쓸 수 있는 것들은..
코드 예시 리덕스로 다크모드 구현하기 전역 상태관리 라이브러리 context api : 비추함 속도가 느림 사용할 때마다 코드가 캐스캐이딩되어서 코드가 금방 더러워진다 redux toolkit : 추천함 바닐라 redux에 여러 기능과 라이브러리를 포함해서 쉽게 쓸 수 있도록 되어있음 mutation 관리, Thunk 관리, 캐싱 등 일반 리덕스보다 훨씬 쓰기 편함 recoil 아직도 알파단계라 뭐가 금방금방 바뀜 atom 정도 (+ selector) 만 쓸 것 redux 사전 설정 import { Provider } from 'react-redux'; import { store } from './states'; // 전역 상태값 저장하는 store 위치 ... const root = ReactDOM.c..
코드리뷰 코드리뷰 #1 (내코드) readme 리드미만 보면 전교1등이다 (ㅋㅋㅋㅋ) 하이테크 볼펜 20개씩 있을것같다 얼마나 타자를 열심히 쳤으면 손가락이 ㅋㅋ 와 ㅋㅋ 검색어 없을 때 불필요한 API 요청 없애기 export const MovieListContainer = () => { const res = fetchWrappedMovieData(setValue, 1); // 이 부분 때문에 컴포넌트가 로딩될 때마다 검색어가 없어도 값을 fetch한다 .. } 페이지 리렌더링할 때마다 불필요하게 API 요청이 한번씩 더 들어간다 조건문 등을 이용해서 검색어가 없을 땐 API 요청을 없애자 서버가 헛수고하잖어!! 드래그앤 드랍 할 때 내부 문자열 긁히는 거 막기 user-select: none; CSS..