백준 14500 < 테트로미노 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크https://www.acmicpc.net/problem/14500 14500번: 테트로미노폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변www.acmicpc.net 📍알고리즘 분류- 구현- 브루트포스 📍문제 풀이1. 기존 폴리오미노의 회전과 대칭을 고려했을 때, 총 몇 개의 형태가 필요할까? 총 19개의 형태가 필요하다. 2. 보드에서 곡선형 폴리오미노의 점수를 쉽게 계산하는 방법은? 직사각형을 만들고 빈 칸은 0으로 채운 뒤 보드의 각 숫자와 곱하여 합을 구하면 된다. 📍의사 코드1. 가능한 폴리오미노의 형태를 배열에 저장한다2. 형태별 (총..
백준 2057 < 팩토리얼 분해 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://www.acmicpc.net/problem/2057 2057번: 팩토리얼 분해 음 아닌 정수 N이 주어졌을 때, 이 수를 서로 다른 정수 M(M ≥ 1)개의 팩토리얼의 합으로 나타낼 수 있는지 알아내는 프로그램을 작성하시오. 예를 들어 2=0!+1!로 나타낼 수 있지만, 5는 이와 같은 www.acmicpc.net 📍알고리즘 분류 - 수학 - 그리디 - 브루트포스 📍문제 풀이 주어진 수 N이 서로 다른 팩토리얼의 합으로 나타낼 수 있는지 묻는 문제 그리디 알고리즘의 전형적인 문제같다 N의 범위가 매우 크므로 (0 ≤ N ≤ 1,000,000,000,000,000,000) BigInt 로 감싸줘야 한다! 0! = 1 1! = 1 임을 유의하자 📍의사 코드 1. N보다 작은 X! ..
createAsyncThunk
·
✏️ Study/상태 관리
📍Async Thunk Function - 전체 유저 리스트를 fetch하는 fetchUsers 흐름 📍createAsyncThunk - 코드 예시 interface MyData { // ... } const fetchUserById = createAsyncThunk( 'users/fetchById', // 액션 크리에이터 함수의 매개변수에는 typing 필요 async (userId: number) => { const response = await fetch(`https://reqres.in/api/users/${userId}`) // Inferred return type: Promise return (await response.json()) as MyData } ) // the parameter of..
Container/Presentational 패턴
·
✏️ Study/JS Design Patterns
📍Presentational vs Container 구분 Presentational Container 쓰임새 데이터가 유저에게 어떻게 보여질지에 대해서만 다루는 컴포넌트 어떤 데이터가 유저에게 보여질지 결정하는 컴포넌트 역할 View 비즈니스 로직 예시 강아지 사진 리스트를 렌더링하는 컴포넌트 강아지 사진들을 fetch하는 컴포넌트 📍Presentational Components - 예시 import React from "react"; export default function DogImages({ dogs }) { return dogs.map((dog, i) => ); } - props로 데이터를 받는다 - 이 컴포넌트의 주요 기능은 단순히 받은 데이터를 렌더링하는 것 - 따라서 스타일 시트를 포함하며..
Redux의 3가지 규칙
·
✏️ Study/상태 관리
1️⃣하나의 앱에는 하나의 store만 사용 - 여러 store를 만들 수도 있지만, redux dev tools를 사용할 수 없다 2️⃣상태는 읽기 전용 - React의 setState처럼, 상태를 직접 변경하지 않는다 즉, 새로운 상태를 만들고 업데이트 한다 ⭐이를 불변성을 유지한다고 한다 3️⃣reducer 함수는 순수 함수이어야 한다 - 동일한 인풋에 대해 언제나 동일한 아웃풋을 반환해야 한다 - 따라서 new Date() 나 Math.random() 같은 값을 반환해야 하는 경우에는 미들웨어로 처리하거나 reducer 밖에서 처리한다
Action, Reducer, Store, Dispatch
·
✏️ Study/상태 관리
📍Action 상태를 변화시킬 때 발생하는 객체 - 필수로 type 필드를 갖고 있어야 함 - 다른 프로퍼티 추가 가능 { type: "ADD_TODO", data: { id: 0, text: "리덕스 배우기" } } action을 반환하는 action creator 함수 형태로 만들어서 사용하면 export를 앞에 붙여 재사용할 수 있음 📍Reducer 변화를 일으키는 함수로, 2가지 매개변수롤 가짐 - state - action 전달받은 현재 state와 action으로 새로운 state 생성 const initialState = { count: 1 }; function reducer(state = initialState, action) { switch (action.type) { case "INCR..
Redux를 사용하는 이유 3가지 (vs Context API)
·
✏️ Study/상태 관리
1️⃣미들웨어 미들웨어를 사용하면 Action 객체가 Reducer에서 처리되기 전에 다양한 작업을 수행할 수 있다 - 특정 조건에 따라 액션이 무시되게 만들기 - 액션을 콘솔에 출력, 서버에 로깅 등 ⭐비동기 작업을 처리하는데 유용 2️⃣유용한 함수와 Hooks - connect 함수 : Redux의 상태 또는 Action 생성 함수롤 컴포넌트 props로 받아올 수 있음 - useSelector, useDispatch, useStore : React-redux에서 지원하는 유용한 Hooks 상태를 손쉽게 조회, Action을 쉽게 디스패치 등 - connect와 useSelector 함수는 자체적으로 memoization 동작 - 반면, Context API를 사용하면 context의 상태가 바뀌면 ..
백준 9657 < 돌 게임 3 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍유사 문제 2023.01.13 - [⚙️알고리즘 & 자료구조/BOJ] - 백준 9655 JavaScript 백준 9655 JavaScript 📍문제 링크 https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 📍알고리즘 분류 - 수학 - 다이나믹 프로그래밍 - 게임 ggarden.tistory.com 📍문제 링크 https://www.acmicpc.net/problem/9657 9657번: 돌 게임 3 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 📍알고리즘 분류 - 다이나믹 프로그래..