๐ช Programming
[Algorithm] ๋ถํ ์ ๋ณต / ๋ณํฉ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
[Algorithm] ๋ถํ ์ ๋ณต / ๋ณํฉ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
2024.05.07๋ถํ ์ ๋ณต (Devide & Conquer)๊ฐ๋
๋ถํ ์ ๋ณต์ “ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋จ์๋ก ์ชผ๊ฐ๋ฉด์ ํด๊ฒฐํด๋๊ฐ๋ ๋ฐฉ์"์ด๋ค. ๋ฏธ๊ตญ ์ํ์ ํฐ๋
ธ์ด๋ง์ด 1945๋
์ ๊ฐ๋ฐํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ํต์ํธ, ๋ณํฉ ์ ๋ ฌ์ด ๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ์ ํตํด ๊ตฌํํ๋ค.์์ ์ ํ
์ดํ๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ํ
์ดํ ๋๋ผ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ํญ์ ์ฒ์๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ฝ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๊ธฐ ์ด๋ ค์ ๋ค. ์ด๋ฐ ํ
์ดํ ๋๋ผ์ด๋ธ์ ๋ฌธ์ ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด ๋ณํฉ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํ๋ค. ๋ถํ : ๋ฌธ์ ๋ฅผ ๋ ์ด์ ๋ถํ ํ ์ ์์ ๋๊น์ง ๋์ผ ์ ํ์ ์ฌ๋ฌ ํ์ ๋ฌธ์ ๋ก ๋๋๋ค์ ๋ณต : ๊ฐ์ฅ ์์ ๋จ์์ ํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉฐ ์ ๋ณตํ๋ค์กฐํฉ : ํ์ ๋ฌธ์ ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์๋ ๋ฌธ์ ์ ๋ํ ๊ฒฐ๊ณผ๋ก ์กฐํฉํ๋ค ์์๋ถํ ์ ๋ณต์ ๊ตฌ์กฐ๋ ๋์ผํ์ง๋ง ๋ ์์..
[Algorithm] ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ณธ (๋ฒ๋ธ/์ ํ/์ฝ์
)
[Algorithm] ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ณธ (๋ฒ๋ธ/์ ํ/์ฝ์ )
2024.05.06๐ก ์์์ ๋ชจ๋ input์ [10, 7, 9, 5, 1]๋ก ํต์ผ. ๋ฒ๋ธ / ์ ํ / ์ฝ์
์ ๋ ฌ ๋ชจ๋ ์ต์
์ ๊ฒฝ์ฐ O(n²) ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค. ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ์ด ์ข์ง ์์ ๊ฑฐ์ ์ฐ์ง ์์ง๋ง, ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ๋ ์ ์ฉ. ๋ฒ๋ธ ์ ๋ ฌ | Bubble Sort๊ฑฐํ์ด ์ผ์ด๋ ๊ฒ์ฒ๋ผ ๋ฐฐ์ด์ ๊ฐ ์์๋ค์ด ์์ฐจ์ ์ผ๋ก ์ ๋ ฌ๋ผ์ ๋ฒ๋ธ ์ ๋ ฌ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ ์์๋ฅผ ๋ฌถ์ด์ ๋น๊ตํ ํ ํฐ ์ซ์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐ์ด๋ธ๋ค. i๋ฒ์งธ ์ ๋ ฌ์ ๋ง์น ๋๋ง๋ค “๋ค์์ i๋ฒ์งธ” ์๋ฆฌ์ ์์๊ฐ ํ์ ๋๋ค. ์๊ฐ ๋ณต์ก๋ (์ฝ์
์ ๋ ฌ๊ณผ ๋์ผ)Worst Case(์ ๋ ฌ์ด ์ ํ ์๋์ ๋) : O(n²) — ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ฏ๋กBest Case(์ด๋ฏธ ์ ๋ ฌ๋์ ๋) : O(n) ์ฅ๋จ์ (์ฝ์
์ ๋ ฌ๊ณผ ๋์ผ)Stable ์ ๋ ฌ : ์ค๋ณต ๋ฐ์ดํฐ๋ ์์๋ฅผ..
[React] ๋ฆฌ์กํธ Suspense ํบ์๋ณด๊ธฐ
[React] ๋ฆฌ์กํธ Suspense ํบ์๋ณด๊ธฐ
2024.05.06React v18 ๋ฒ์ ๋ถํฐ Suspense๋ฅผ ๊ณต์์ ์ผ๋ก ์ง์ํ๋ค. Suspense๋ ์ปดํฌ๋ํธ ๋ ๋๋ง์ ํ์ํ ํน์ ์์
์ด ์๋ฃ๋์ง ์์์์ React์๊ฒ ์๋ ค์ฃผ๋ ๋งค์ปค๋์ฆ์ด๋ค. ์ด ํน์ ์์
์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๊ฒ ์ง๋ง Data Fetching ๊ฐ์ ๋น๋๊ธฐ ์์
์ธ ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ๋ง๋ค. Suspense๋ฅผ ์ด์ฉํ๋ฉด, ๋ฐ์ดํฐ๋ฅผ ๋ค ๋ถ๋ฌ์ค์ง ๋ชปํ ์ปดํฌ๋ํธ์ ๋ ๋๋ง์ ์ ์ ์ค๋จ์ํค๊ณ Loading ํ๋ฉด ๊ฐ์ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋จผ์ ๋ณด์ฌ์ฃผ๋๋ก ํ ์ ์๋ค. ๐ก Suspense๋ React Query, SWR ๊ฐ์ Data Fetching ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์ฌ์ฉํ ์ ์๋๋ก ์ค๊ณ๋๋ค. Data Fetching ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ต์
์ธ์๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก Suspense ๊ธฐ๋ฅ์ ํ์ฑํ ํ ์ ์๋ค. ์๋ฅผ๋ค์ด useSWR์์ ์ธ..
[Git] ์๋ฉด ์ ์ฉํ GitHub ๋จ์ถํค / ํ
[Git] ์๋ฉด ์ ์ฉํ GitHub ๋จ์ถํค / ํ
2024.05.05๐ก ๋ฏธ๋ฆฝ์ ํGitHub ํ์ด์ง์์ ? ํค๋ฅผ ๋๋ฅด๋ฉด ๋จ์ถํค ๋ชฉ๋ก์ ํ์ธํ ์ ์๋ค.์์ค์ฝ๋ ํ๋ฉด์์ . ํค๋ฅผ ๋๋ฅด๋ฉด ์น VSCode๋ก ๋ณผ ์ ์๋ค.GitHub ํ๋กํ ์ฃผ์ ๋์ .png๋ฅผ ๋ถ์ด๋ฉด ํ๋กํ ์ด๋ฏธ์ง๋ฅผ ๋ณผ ์ ์๋คe.g. https://github.com/romantech.png Focus the search bar/ ํน์ s ํค๋ฅผ ๋๋ฅด๋ฉด ์ผ์ชฝ ์๋จ์ ์๋ ๊ฒ์์ฐฝ์ ํฌ์ปค์ค๋๋ค. ๊ฒ์์ฐฝ์ ์ํ๋ ํค์๋๋ฅผ ์
๋ ฅํด์ ๋ด ๊ณ์ ์ด๋ ๋ค๋ฅธ ์ฌ๋ ๊ณ์ ์ ์๋ ๋ ํฌ์งํ ๋ฆฌ๋ก ์ด๋ํ ์ ์๋ค. File Finder๋ ํฌ์งํ ๋ฆฌ์์ t ํค๋ฅผ ๋๋ฅด๋ฉด File Finder ๋ชจ๋๊ฐ ํ์ฑํ๋๋ค. File Finder ๋ชจ๋์์ ํ์ผ / ํด๋๋ช
์ ์
๋ ฅํ๋ฉด ํด๋น ๋ ํฌ์งํ ๋ฆฌ์ ์๋ ํ์ผ ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋ค. ํ์ผ ๋ชฉ๋ก์์ ์ / ์..
[TS] ํ์
์คํฌ๋ฆฝํธ ์ ์ฝ ์กฐ๊ฑด๊ณผ ์กฐ๊ฑด๋ถ ํ์
[TS] ํ์ ์คํฌ๋ฆฝํธ ์ ์ฝ ์กฐ๊ฑด๊ณผ ์กฐ๊ฑด๋ถ ํ์
2024.05.05์๋ณ์ ์์ญ / ํ์
๊ตฌํ ์์ญtype, interface ํค์๋๋ฅผ ์ฌ์ฉํ ํ์
์ ์ธ์ = ๋ฑํธ์ {} ์ค๊ดํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ณ์(์ข), ํ์
๊ตฌํ(์ฐ) ์์ญ์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ค.// type ์๋ณ์ = ํ์
๊ตฌํtype MyType = string | number;// interface ์๋ณ์ { ํ์
๊ตฌํ }interface User { name: string; age: number;} ์ ์ฝ ์กฐ๊ฑด | Constraints์๋ณ์ ์์ญ์์ ์ฌ์ฉํ๋ extends๋ ์ ์ฝ ์กฐ๊ฑด์ ์ถ๊ฐํ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ค๋ฆญ์ ๋ชจ๋ ํ์
์ด ์ฌ ์ ์์ง๋ง ์ ์ฝ ์กฐ๊ฑด์ ์ด์ฉํด ํน์ ํ์
์ผ๋ก ์ ํํ ์ ์๋ค.๊ธฐ๋ณธ ๋ฌธ๋ฒ : T extends U — T๋ U์ ๋ถ๋ถ ์งํฉ(T ⊆ U)์ผ๋ก ๋ณผ ์ ์์ex) 64 extends ..
[HTML/CSS] select ํ๊ทธ์ ํ์ดํ ์์ด์ฝ ๋ณ๊ฒฝํ๊ธฐ
[HTML/CSS] select ํ๊ทธ์ ํ์ดํ ์์ด์ฝ ๋ณ๊ฒฝํ๊ธฐ
2024.05.05์์๋ ๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ต์
์ ์ ํํ ์ ์๋ ๋๋กญ๋ค์ด์ ํ์ํ๋ค. ์ฐ์ธก์ ์๋ ๋๋กญ๋ค์ด ํ์ดํ ์์ด์ฝ์ ๋ธ๋ผ์ฐ์ ๋ง๋ค ์คํ์ผ์ด ์กฐ๊ธ์ฉ ๋ค๋ฅด๋ค. ์ด๋ค ๋ธ๋ผ์ฐ์ ์์๋ ๋๊ฐ์ ์์ด์ฝ์ผ๋ก ํ์ํ๊ณ ์ถ๋ค๋ฉด background ์คํ์ผ ์์ฑ์ ์ด์ฉํด์ ๋ณ๊ฒฝํ ์ ์๋ค.Select your device Apple Oppo Xiaomi appearance ์์ฑ ์์ appearance CSS ์์ฑ์ ์ด์์ฒด์ ์ ํ
๋ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ UI ์ปจํธ๋กค์ ๊ธฐ๋ณธ ์ธํ(appearance)์ ์ ์ดํ ๋ ์ฌ์ฉํ๋ค. appearance: none ์์ฑ์ ์ ์ฉํ๋ฉด input progress ๋ฑ์ ์์๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ง๋ ์คํ์ผ์ ํด์ ํ ์ ์๋ค. select ์์์ ์ฌ์ฉํ๋ฉด ์ฐ์ธก ํ์ดํ ์์ด์ฝ์ด ์ฌ๋ผ์ง๋ค.select[id="sele..
[React] ๋ฆฌ์กํธ Strict Mode ์๊ฒฉ ๋ชจ๋์ ์ฌ์ด๋ ์ดํํธ
[React] ๋ฆฌ์กํธ Strict Mode ์๊ฒฉ ๋ชจ๋์ ์ฌ์ด๋ ์ดํํธ
2024.05.05์๊ฒฉ ๋ชจ๋์ ๊ธฐ๋ฅCRA๋ก ์์ฑํ React ํ๋ก์ ํธ์์ ์๊ฒฉ ๋ชจ๋(Strict Mode)๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉ๋ผ ์๋ค. ์๊ฒฉ ๋ชจ๋๋ ์ดํ๋ฆฌ์ผ์ด์
์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์์๋ด๊ธฐ ์ํด ๋ฆฌ์กํธ์์ ์ ๊ณตํ๋ ๋๊ตฌ๋ค. ๊ฐ๋ฐ ๋ชจ๋์์ ํจ์ ์ปดํฌ๋ํธ ๋ ๋๋ง / API ํธ์ถ ๋ฑ์ด ์ค๋ณตํด์ ๋ฐ์ํ๋ค๋ฉด ์๊ฒฉ ๋ชจ๋ ๋๋ฌธ์ ๊ทธ๋ด ๊ฐ๋ฅ์ฑ์ด ๋๋ค.import React from "react";import ReactDOM from "react-dom/client";import App from "./pages/App";const root = ReactDOM.createRoot( document.getElementById("root") as HTMLElement,);root.render({/* ... */}); ์๊ฒฉ ๋ชจ๋๋ ์๋ ๊ธฐ๋ฅ์ ์ ..
[React] ํค๋ณด๋๋ก ์กฐ์ํ ์ ์๋ ๋๋กญ๋ค์ด ์๋์์ฑ ๊ฒ์์ฐฝ ๊ตฌํํ๊ธฐ
[React] ํค๋ณด๋๋ก ์กฐ์ํ ์ ์๋ ๋๋กญ๋ค์ด ์๋์์ฑ ๊ฒ์์ฐฝ ๊ตฌํํ๊ธฐ
2024.05.05๊ฒ์์ฐฝ ์๋ ์์ฑ ๊ธฐ๋ฅ์ , ํ๊ทธ๋ฅผ ์ด์ฉํด ๋น ๋ฅด๊ฒ ๊ตฌํํ ์ ์๋ค(์ฐธ๊ณ ํฌ์คํ
). ํค๋ณด๋ ๋ฐฉํฅํค๋ก ์ต์
์ ์ ํํ ์๋ ์๋ค. ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ๋ฆฌ์คํธ ์์์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ํ ๋นํ ์ ์๋ ๋จ์ ์ด ์๋ค(๊ฒ์์ ์ ๋ง ๋ง์ด ํด๋ดค์ง๋ง ๊ฒฐ๋ก ์ ๋ถ๊ฐ). ๊ฒ์์ฐฝ์ ํค์๋๋ฅผ ์
๋ ฅํ ํ ๋ชฉ๋ก์ ์๋ ๊ฐ ์ต์
()์ ํด๋ฆญํ ๋๋ง๋ค ํน์ ์ก์
์ ์ทจํด์ผ ํ๋ค๋ฉด ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค. ๋์์ React Select ์ฒ๋ผ ์ ๋ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ๋ช ๋
๊ฐ ์ ์ง ๋ณด์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ณด๋จ ์์ฑ๋๋ ์กฐ๊ธ ๋จ์ด์ง ์ ์์ง๋ง ์ง์ ๊ตฌํํ ์ ์๋ค. ์๋๋ ์ง์ ๊ตฌํํ ๋ด์ฉ์ ๊ธฐ๋กํ ๋ด์ฉ. ๊ตฌํ ๋ชฉํ๋ง์ฐ์ค๋ก ๋ฆฌ์คํธ ์ด๋ / ์ ํEnter ํค๋ก ์ ํ๋ฐฉํฅํค๋ก ๋ฆฌ์คํธ ์ด๋ (Keyboard navigate)์คํฌ๋กค์ด ์๊ธด ๋ชฉ๋ก์์ ๋ฐฉํฅ..
[HTML/CSS] Tailwind CSS ํด๋์ค ํจํด ์ฌํ์ฉ / ๊ธฐ๋ณธ ํ
๋ง ์์ &ํ์ฅ
[HTML/CSS] Tailwind CSS ํด๋์ค ํจํด ์ฌํ์ฉ / ๊ธฐ๋ณธ ํ ๋ง ์์ &ํ์ฅ
2024.05.05๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๋ Tailwind CSS ํด๋์ค ํจํด์(ํน์ ์์์ ์ ์ํ ํด๋์ค ๊ทธ๋ฃน์ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉํ ๋) ํ๋์ ์ปค์คํ
ํด๋์ค๋ก ์ถ์ถํด์ ์ฌ์ฉํ ์ ์๋ค ๋ฐฐ๊ฒฝ ์ง์ — Tailwind CSS 3๊ณ์ธตTailwind๋ CSS ์ฐ์ ์์๋ฅผ ์ ์ดํ๊ธฐ ์ํด base, components, utilities 3๊ฐ์ ๊ณ์ธต(layer)์ผ๋ก ๊ตฌ๋ถํ๋ค. ์ด๋ ๊ฒ ๊ณ์ธต์ ๊ตฌ๋ถํด๋๋ฉด ๊ฐ ์คํ์ผ์ด ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ผ๋ฉฐ, @layer ์ง์๋ฌธ(ํด๋น ์คํ์ผ์ด ์ด๋ค ๊ณ์ธต์ ์ํ ์ง ์ง์ )์ ์ฌ์ฉํด ์ํ๋ ๋ฐฉ์์ผ๋ก ์ ์ธ ์์๋ฅผ ์ ์ดํ ์ ์๊ฒ ๋๋ค. — ์ฐธ๊ณ base์ผ๋ฐ HTML ์์์ ์ ์ฉ๋๋ ์ฌ์ค์ ๊ท์น(reset rules) / ๊ธฐ๋ณธ ์คํ์ผ์ ์ํ ๋ ์ด์ด. base ๊ณ์ธต์ ํน์ ์๋ฆฌ๋จผํธ์ ๊ธฐ๋ณธ ์คํ..
[React] ๋ฆฌ์กํธ ๋๋๊ทธ์ค๋๋กญ ํ์ผ ์
๋ก๋ ๊ตฌํ
[React] ๋ฆฌ์กํธ ๋๋๊ทธ์ค๋๋กญ ํ์ผ ์ ๋ก๋ ๊ตฌํ
2024.05.05์์ฆ ๋๋ถ๋ถ ์น์ฌ์ดํธ์์ ํ์ผ์ ์
๋ก๋ํ ๋ ๋ง์ฐ์ค๋ก ์ํ๋ ํ์ผ์ ๋์ด ๋๋ ๋๋๊ทธ&๋๋กญ ๊ธฐ๋ฅ์ ์ง์ํ๋ค. ๋ฆฌ์กํธ์์ React DnD ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง HTML5์์ ์ ๊ณตํ๋ ๋๋๊ทธ ๋๋กญ API๋ฅผ ์ด์ฉํด์ ์ง์ ๊ตฌํํ ์ ์๋ค. ์๊ฐ๋ณด๋ค ์ด๋ ต์ง๋ ์๋ค. ๊ธฐ๋ณธ ๊ตฌ์กฐ๋๋ณด๊ธฐexport interface IFileTypes { id: number; object: File; // File ๊ฐ์ฒด}const DragDrop = ( { /* ... */ },) => { const [isDragging, setIsDragging] = useState(false); const [files, setFiles] = useState([]); const fileId = useRef(0);..
[HTML/CSS] width ์์ฑ ์๋ ๋งค์ปค๋์ฆ
[HTML/CSS] width ์์ฑ ์๋ ๋งค์ปค๋์ฆ
2024.05.05์๋ฆฌ๋จผํธ์ ๋๋น๋ฅผ ์ ์ดํ๊ธฐ ์ํด CSS์ width ์์ฑ์ ์ฌ์ฉํ๋ค. ํ์์ ์์ฃผ ์ฌ์ฉํ๋ ์์ฑ์ด์ง๋ง ์ข
์ข
์๊ฐํ๋๋ก ์๋ํ์ง ์์ ๋๊ฐ ์๋ค. width๋ โ์ ๋๊ฐ โ์๋๊ฐ โํค์๋ ํฌ๊ฒ 3๊ฐ์ง ์ค์ ์ผ๋ก ๊ตฌ๋ถ๋๋ฉฐ, ๊ฐ ์ค์ ์ ๋ฐ๋ผ ๋๋น๊ฐ ๋ค๋ฅด๊ฒ ๊ฒฐ์ ๋๋ค. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua ์ ๋๊ฐsection { width: 200px; height: 200px; border: 1px solid gray;} /* ๋ถ๋ชจ */p { width: 300px; background: Khaki; mar..
[TS] ํ์
์คํฌ๋ฆฝํธ ๋งต๋ ํ์
/ ์ ํธ๋ฆฌํฐ ํ์
/ Enum
[TS] ํ์ ์คํฌ๋ฆฝํธ ๋งต๋ ํ์ / ์ ํธ๋ฆฌํฐ ํ์ / Enum
2024.05.05ํ์
์คํฌ๋ฆฝํธ์ ๋งต๋ ํ์
(Mapped Types)์ ๊ธฐ์กด ํ์
์ ์๋ก์ด ํ์
์ผ๋ก ๋ณํํด์ฃผ๋ ๋ฌธ๋ฒ์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ map ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ํ์
์ ์ ์ฉํ ๊ฒ๊ณผ ๋น์ทํ๋ค(๊ทธ๋์ ์ด๋ฆ์ด Mapped Types๋ค). ๋งต๋ ํ์
๊ฐ๋
ํบ์๋ณด๊ธฐ์๋ ๋๋ฐ์ด์ค ๋ธ๋๋๋ฅผ ๋ํ๋ด๋ ์ ๋์จ ํ์
Devices๊ฐ ์๋ค. ์ฌ๊ธฐ์ ๊ฐ ๋๋ฐ์ด์ค ๋ธ๋๋์ ๊ฐ๊ฒฉ ์ ๋ณด๊ฐ ํฌํจ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๋ ๋งต๋ ํ์
์ ํ์ฉํ ์ ์๋ค.type Devices = 'APPLE' | 'OPPO' | 'XIAOMI'; // ๋๋ฐ์ด์ค ๋ธ๋๋๋ฅผ ๋ํ๋ด๋ ์ ๋์จ ํ์
type DevicePrices = { [P in Devices]: number }; // ๋๋ฐ์ด์ค ๋ธ๋๋ ํ์
์ ์ํํด์ key๋ก ์ ์๋๋ ๋งต๋ ํ์
const deviceInfo: Devi..