memoization
-
React.js useCallback ํ
useCallback ํ ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ์ฌ์ฉ๋๋ useCallback ํ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. useCallback ํ ๊ฐ๋ ์ปดํฌ๋ํธ์ ์ฑ๋ฅ ์ต์ ํ(Optimization)๋ฅผ ์ํด ์์ฃผ ์ฌ์ฉ๋๋ ํ ํจ์๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization)ํ์ฌ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋ ๋๋ง๋ค ํจ์๊ฐ ์ฌ์์ฑ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒuseCallback(() => {}, [])์ ๊ฐ์ด ์ฌ์ฉํ๋ค.์ฒซ ๋ฒ์งธ ์ธ์๋ก ํจ์๋ฅผ ๋ฐ๊ณ , ๋ ๋ฒ์งธ ์ธ์๋ก ์์กด์ฑ ๋ฐฐ์ด(Dependencies Array)์ ๋ฐ๋๋ค.const memoizedCallback = useCallback(() => { doSomething(a, b);}, [a, b]); โ ๋ฆฌ์กํธ๋ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋ ๋๋ง๋ค ํด๋น ํจ์๋ฅผ ๋ค์ ์์ฑํ์ง ์๊ณ ,..
0 2024.09.20 -
React.js React.memo()
React.memo()๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ์ ๊ณตํ๋ ๊ณ ์ฐจ ํจ์(Higher-Order Component)์ธ React.memo()์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. React.memo()๊ฐ๋ ๋ฆฌ์กํธ์์ ์ ๊ณตํ๋ ๊ณ ์ฐจ ํจ์(Higher-Order Component)ํจ์ํ ์ปดํฌ๋ํธ์ ๋ถํ์ํ ์ฌ๋ ๋๋ง์ ๋ฐฉ์งํ๋ ์ญํ ์ ํ๋ค.์ ๋ฌ๋ props๊ฐ ๋ณ๊ฒฝ๋์ง ์๋ ํ ํด๋น ์ปดํฌ๋ํธ๋ ๋ค์ ๋ ๋๋ง๋์ง ์๋๋ก ์ต์ ํ(Optimization)ํ ์ ์๋ค.React.memo()๋ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ์ธ์๋ก ๋ฐ์, ๊ทธ์ ๋์ผํ ๋์์ ํ๋ ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ๋ฐํํ์ง๋ง, ์ถ๊ฐ์ ์ผ๋ก props๊ฐ ๋ณ๊ฒฝ๋์๋์ง ํ์ธํ๋ ์ต์ ํ ์์ ์ด ์ถ๊ฐ๋๋ค.props๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ, ๋ฉ๋ชจ์ด์ ์ด์ ๋ ์ปดํฌ๋ํธ๋ ์ด์ ๋ ๋๋ง์์..
0 2024.09.18 -
React.js memo() ์ฌ์ฉํ ๋ ์ฃผ์ํ ์
memo() ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์ memo()๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ์ ์ ๋ฆฌํด๋ณธ๋ค. memo()๊ฐ๋ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization)ํ์ฌ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ๋ ์ญํ ์ ํ๋ค.์ฃผ๋ก ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ์ฌ์ฉ๋๋ค.import { memo } from 'react';const MyComponent = memo(function MyComponent({ prop1, prop2 }) => { // ...});export default MyComponent; ๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํฌ๋ํธ์ props๊ฐ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํ์ง ์๋๋ค.props์ ์์ ๋น๊ต(Shallow Comparison)๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ค.์์ ๋น๊ต๋ ๊ธฐ๋ณธ ์๋ฃํ(์ซ์, ๋ฌธ..
0 2024.06.25 -
React.js useEffect์ useCallback
useEffect์ useCallback๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ์์ ์ฌ์ฉ๋๋ useCallback๊ณผ useEffect์ ๋ํด ์์๋ณด์. useCallback๋ฆฌ์กํธ์์ ํจ์๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization)ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.๋ถํ์ํ ํจ์์ ์ฌ์์ฑ์ ๋ฐฉ์งํ๊ณ , ํจ์๊ฐ ์์กดํ๋ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง ์๋ก์ด ํจ์๋ฅผ ์์ฑํ๋๋ก ํ ์ ์๋ค. ์์ ์ฝ๋์๋์ ์ฝ๋์์ handleClick ํจ์๋ count ๋ณ์๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง ์ฌ์์ฑ ๋๋ค.๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ handleClick ํจ์๋ ์ฌ์์ฑ๋์ง ์์ผ๋ฉฐ, ๊ฐ์ ํจ์๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ฒ ๋๋ค.์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ ํจ์์ ์ฌ์์ฑ์ ์ต์ํํ์ฌ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ํ๋๋ฐ ๋์์ ์ค ์ ์๋ค.import React, { useCallback, useState } from 'rea..
0 2024.06.24 -
BOJ-2156 [C++] ํฌ๋์ฃผ ์์
๋ฌธ์ ํจ์ฃผ๋ ํฌ๋์ฃผ ์์ํ์ ๊ฐ๋ค. ๊ทธ ๊ณณ์ ๊ฐ๋๋, ํ ์ด๋ธ ์์ ๋ค์ํ ํฌ๋์ฃผ๊ฐ ๋ค์ด์๋ ํฌ๋์ฃผ ์์ด ์ผ๋ ฌ๋ก ๋์ฌ ์์๋ค. ํจ์ฃผ๋ ํฌ๋์ฃผ ์์์ ํ๋ ค๊ณ ํ๋๋ฐ, ์ฌ๊ธฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ๊ท์น์ด ์๋ค. ํฌ๋์ฃผ ์์ ์ ํํ๋ฉด ๊ทธ ์์ ๋ค์ด์๋ ํฌ๋์ฃผ๋ ๋ชจ๋ ๋ง์ ์ผ ํ๊ณ , ๋ง์ ํ์๋ ์๋ ์์น์ ๋ค์ ๋์์ผ ํ๋ค. ์ฐ์์ผ๋ก ๋์ฌ ์๋ 3์์ ๋ชจ๋ ๋ง์ค ์๋ ์๋ค. ํจ์ฃผ๋ ๋ ์ ์๋ ๋๋ก ๋ง์ ์์ ํฌ๋์ฃผ๋ฅผ ๋ง๋ณด๊ธฐ ์ํด์ ์ด๋ค ํฌ๋์ฃผ ์์ ์ ํํด์ผ ํ ์ง ๊ณ ๋ฏผํ๊ณ ์๋ค. 1๋ถํฐ n๊น์ง์ ๋ฒํธ๊ฐ ๋ถ์ด ์๋ n๊ฐ์ ํฌ๋์ฃผ ์์ด ์์๋๋ก ํ ์ด๋ธ ์์ ๋์ฌ ์๊ณ , ๊ฐ ํฌ๋์ฃผ ์์ ๋ค์ด์๋ ํฌ๋์ฃผ์ ์์ด ์ฃผ์ด์ก์ ๋, ํจ์ฃผ๋ฅผ ๋์ ๊ฐ์ฅ ๋ง์ ์์ ํฌ๋์ฃผ๋ฅผ ๋ง์ค ์ ์๋๋ก ํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด ..
0 2022.12.13 -
BOJ-2579 [C++] ๊ณ๋จ ์ค๋ฅด๊ธฐ
๋ฌธ์ ๊ณ๋จ ์ค๋ฅด๊ธฐ ๊ฒ์์ ๊ณ๋จ ์๋ ์์์ ๋ถํฐ ๊ณ๋จ ๊ผญ๋๊ธฐ์ ์์นํ ๋์ฐฉ์ ๊น์ง ๊ฐ๋ ๊ฒ์์ด๋ค. ๊ณผ ๊ฐ์ด ๊ฐ๊ฐ์ ๊ณ๋จ์๋ ์ผ์ ํ ์ ์๊ฐ ์ฐ์ฌ ์๋๋ฐ ๊ณ๋จ์ ๋ฐ์ผ๋ฉด ๊ทธ ๊ณ๋จ์ ์ฐ์ฌ ์๋ ์ ์๋ฅผ ์ป๊ฒ ๋๋ค. ์๋ฅผ ๋ค์ด ์ ๊ฐ์ด ์์์ ์์๋ถํฐ ์ฒซ ๋ฒ์งธ, ๋ ๋ฒ์งธ, ๋ค ๋ฒ์งธ, ์ฌ์ฏ ๋ฒ์งธ ๊ณ๋จ์ ๋ฐ์ ๋์ฐฉ์ ์ ๋๋ฌํ๋ฉด ์ด ์ ์๋ 10 + 20 + 25 + 20 = 75์ ์ด ๋๋ค. ๊ณ๋จ ์ค๋ฅด๋ ๋ฐ๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ด ์๋ค. ๊ณ๋จ์ ํ ๋ฒ์ ํ ๊ณ๋จ์ฉ ๋๋ ๋ ๊ณ๋จ์ฉ ์ค๋ฅผ ์ ์๋ค. ์ฆ, ํ ๊ณ๋จ์ ๋ฐ์ผ๋ฉด์ ์ด์ด์ ๋ค์ ๊ณ๋จ์ด๋, ๋ค์ ๋ค์ ๊ณ๋จ์ผ๋ก ์ค๋ฅผ ์ ์๋ค. ์ฐ์๋ ์ธ ๊ฐ์ ๊ณ๋จ์ ๋ชจ๋ ๋ฐ์์๋ ์ ๋๋ค. ๋จ, ์์์ ์ ๊ณ๋จ์ ํฌํจ๋์ง ์๋๋ค. ๋ง์ง๋ง ๋์ฐฉ ๊ณ๋จ์ ๋ฐ๋์ ๋ฐ์์ผ ํ๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ ๊ณ๋จ์ ..
0 2022.12.09 -
BOJ-9184 [C++] ์ ๋๋ ํจ์ ์คํ
๋ฌธ์ ์ฌ๊ท ํธ์ถ๋ง ์๊ฐํ๋ฉด ์ ์ด ๋๋ค! ์๋๊ฐ์? ๋ค์๊ณผ ๊ฐ์ ์ฌ๊ทํจ์ w(a, b, c)๊ฐ ์๋ค. if a 20, then w(a, b, c) returns: w(20, 20, 20) if a < b and b < c, then w(a, b, c) returns: w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c) otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1) ์์ ํจ์๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ๋งค์ฐ ์ฝ๋ค. ํ์ง๋ง, ๊ทธ๋๋ก ๊ตฌํํ๋ฉด ๊ฐ์ ๊ตฌํ๋๋ฐ ๋งค์ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค. (์๋ฅผ ๋ค๋ฉด, a=15, b=15, c=15) a, b, c๊ฐ ์ฃผ์ด์ก์ ๋, w(a, b, c)๋ฅผ ์ถ๋ ฅ..
0 2022.12.04 -
BOJ-1010 [C++] ๋ค๋ฆฌ ๋๊ธฐ
๋ฌธ์ ์ฌ์์ด๋ ํ ๋์์ ์์ฅ์ด ๋์๋ค. ์ด ๋์์๋ ๋์๋ฅผ ๋์ชฝ๊ณผ ์์ชฝ์ผ๋ก ๋๋๋ ํฐ ์ผ์ง์ ๋ชจ์์ ๊ฐ์ด ํ๋ฅด๊ณ ์๋ค. ํ์ง๋ง ์ฌ์์ด๋ ๋ค๋ฆฌ๊ฐ ์์ด์ ์๋ฏผ๋ค์ด ๊ฐ์ ๊ฑด๋๋๋ฐ ํฐ ๋ถํธ์ ๊ฒช๊ณ ์์์ ์๊ณ ๋ค๋ฆฌ๋ฅผ ์ง๊ธฐ๋ก ๊ฒฐ์ฌํ์๋ค. ๊ฐ ์ฃผ๋ณ์์ ๋ค๋ฆฌ๋ฅผ ์ง๊ธฐ์ ์ ํฉํ ๊ณณ์ ์ฌ์ดํธ๋ผ๊ณ ํ๋ค. ์ฌ์์ด๋ ๊ฐ ์ฃผ๋ณ์ ๋ฉด๋ฐํ ์กฐ์ฌํด ๋ณธ ๊ฒฐ๊ณผ ๊ฐ์ ์์ชฝ์๋ N๊ฐ์ ์ฌ์ดํธ๊ฐ ์๊ณ ๋์ชฝ์๋ M๊ฐ์ ์ฌ์ดํธ๊ฐ ์๋ค๋ ๊ฒ์ ์์๋ค. (N โค M) ์ฌ์์ด๋ ์์ชฝ์ ์ฌ์ดํธ์ ๋์ชฝ์ ์ฌ์ดํธ๋ฅผ ๋ค๋ฆฌ๋ก ์ฐ๊ฒฐํ๋ ค๊ณ ํ๋ค. (์ด๋ ํ ์ฌ์ดํธ์๋ ์ต๋ ํ ๊ฐ์ ๋ค๋ฆฌ๋ง ์ฐ๊ฒฐ๋ ์ ์๋ค.) ์ฌ์์ด๋ ๋ค๋ฆฌ๋ฅผ ์ต๋ํ ๋ง์ด ์ง์ผ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ์์ชฝ์ ์ฌ์ดํธ ๊ฐ์๋งํผ (N๊ฐ) ๋ค๋ฆฌ๋ฅผ ์ง์ผ๋ ค๊ณ ํ๋ค. ๋ค๋ฆฌ๋ผ๋ฆฌ๋ ์๋ก ๊ฒน์ณ์ง ์ ์๋ค๊ณ ํ ๋ ๋ค๋ฆฌ๋ฅผ ์ง..
0 2022.11.15 -
BOJ-11051 [C++] ์ดํญ ๊ณ์ 2
๋ฌธ์ ์์ฐ์ N๊ณผ ์ ์ K๊ฐ ์ฃผ์ด์ก์ ๋ ์ดํญ ๊ณ์ {N \choose K}๋ฅผ 10,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 โค N โค 1000, 0 โค K โค N) ์ถ๋ ฅ {N \choose K} ๋ฅผ 10,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค. ์์ ์ ๋ ฅ 1 5 2 ์์ ์ถ๋ ฅ 1 10 ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ ์ํ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ ์กฐํฉ๋ก ๋ฌธ์ ์ถ์ฒ https://www.acmicpc.net/problem/11051 11051๋ฒ: ์ดํญ ๊ณ์ 2 ์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 โค N โค 1,000, 0 โค K โค N) www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ ์ดํญ ๊ณ์๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ฉ๋ชจ์ด..
0 2022.11.15 -
BOJ-11050 [C++] ์ดํญ ๊ณ์ 1
๋ฌธ์ ์์ฐ์ N๊ณผ ์ ์ K๊ฐ ์ฃผ์ด์ก์ ๋ ์ดํญ ๊ณ์ {N \choose K}๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 โค N โค 10, 0 โค K โค N) ์ถ๋ ฅ {N \choose K} ๋ฅผ ์ถ๋ ฅํ๋ค. ์์ ์ ๋ ฅ 1 5 2 ์์ ์ถ๋ ฅ 1 10 ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ ์ํ ๊ตฌํ ์กฐํฉ๋ก ๋ฌธ์ ์ถ์ฒ https://www.acmicpc.net/problem/11050 11050๋ฒ: ์ดํญ ๊ณ์ 1 ์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 โค N โค 10, 0 โค K โค N) www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ ์ดํญ ๊ณ์๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค. ๊ด๋ จ ๊ฒ์๊ธ : https://dev-astra.tisto..
0 2022.11.15