ํ์ด์ฌ์ผ๋ก ํผ ์ด์ ๋ ๊ฐ์๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ํ๊ณ ์ถ์ด์ ํ๋ค๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์
์ถ๋ ฅํ๊ธฐ ๊ท์ฐฎ์์์ด๋ค. n = int(input()) time = [] for _ in range(n): time.append(tuple(map(int, input().split()))) # print(time) time = sorted(time, key=lambda x: (x[0], x[1])) # print(time) cnt = 0 while len(time) > 0: start = time[0][0] end = time[0][1] del time[0] for i in range(len(time)): if time[i][0] >= end: start = time[i][0] end = time[i][1] del time[i] b..
์ ์ฒด ๊ธ
์ฑ์ฅํ๊ธฐ ์ํ ๊ธ์ ์์ฑํ๋ ค๊ณ ๋ ธ๋ ฅ์ค ์ ๋๋ค
ํ์ ๋ถ์ ํค๋ ์ปดํฌ๋ํธ ๊ตฌํ ํ ํ์ ๋ถ๊ป์ ์ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ๋งก์ผ์
จ๋ค. ๊ฐ๋จํด๋ณด์ด์ง๋ง ์ฌ์ค ๊ฐ๋จํ์ง ์๋ค. ๋ก๊ทธ์ธ ๋ก๊ทธ์์ ์ ๋ฌด๋ ๊ทธ๋ ๊ณ search ํ๋ ๋ถ๋ถ๋ ๊ทธ๋ ๊ณ ๋ฌด์๋ณด๋ค ์ notification. ํค๋ ๋งจ ์ค๋ฅธ์ชฝ ์๊ทธ๋งํ ์์ด์ฝ์ ๋๋ฅด๋ฉด ๋จ๋ ์ปดํฌ๋ํธ์ด๋ค. ํ์๋ถ์ด ์ฌ๊ธฐ์ ์ด๋ ค์ด ๋ถ๋ถ์ด ์์ผ์
จ๋๋ฐ ์๋์ ๊ฐ๋ค. ํ์
์ชฝ์ ๋ด๊ฐ ์๋ฃ๋ฅผ ์ฐพ์์ ๊ถ๊ธ์ฆ์ ํด์์์ผ๋๋ ธ๊ณ ์ฒซ ๋ฉ์์ง๋ฅผ ๋ณด๋ฉด ๋ชจ๋ ์๋ฆผ์ ์ฝ์ ์ฒ๋ฆฌํ์๋ ์๋์ผ๋ก ์๋ฆผ์ฐฝ์ด ๋ซํ๋ ๋ฌธ์ ๊ฐ ์์ผ์
จ๋ค๊ณ ํ๋ค. ๋จ๊ฑฐ์ด ํ ๋ก ํ์ฅ ์ด์ ๋ํด์ ์ด ํ์ ๋ถ๊ณผ ๋ง์ ์๊ธฐ๋ฅผ ๋๋ด๋ค. ๋๋ ์ฝ๋๋ฅผ ๋ณด๋ฉฐ ๋ฌธ์ ์ ์ ์ฐพ๊ธฐ ์ ๋ง ์ด๋ ค์ ์ง๋ง ๊ฒฐ๊ตญ์ ์ฐพ์๋ด์๋๋ฐ ์ฒ์์๋ race condition ์ด์์ธ๊ฐ(?) ํ๋ค๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ๋์ ์๋ฆฌ ๋๋ฌธ์์ ..

๊ธฐ๋ฅ ์๊ตฌ์ฌํญ ๋ถ์ ํผ๊ทธ๋ง์์ ๊ฐ์ ธ์๋ค. ์์์ ์ ์ ์๋ ๊ฒ์ ํ์ด์ง๊ฐ ์ต๋ 7๊ฐ๋ง ๋ณด์ฌ์ ธ์ผ ํ๋ค๋ ๊ฒ์ด๊ณ , ์ ํ๋ ํ์ด์ง๋ฅผ ๊ฐ์ด๋ฐ์ ์ค๋๋ก ํด์ฃผ์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ๊ตฌํ export default function Pagination({ currentPage, setCurrentPage, allDataCount, perPageDataCount }: Props) { const pageCount = Math.ceil(allDataCount / perPageDataCount); const pageNumberList = createPageNumberList(currentPage, pageCount); return ( {pageCount > PAGE_LIMIT && ( setCurrentPage(current..

์ฝ๋ฉ ์ปจ๋ฒค์
์กฐ์จ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ฝ๋ฉ ์ปจ๋ฒค์
์ ์ ๋๋ก ๋ง์ถ์ด ๋ณธ ์ ์ด ์์๋ค. ์ด๋ฒ์ ์คํ๋ฆฐํธ์์ ์ค๊ธ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉฐ ์ฝ๋ฉ ์ปจ๋ฒค์
์ ํ์คํ๊ฒ ์ ํ๊ฒ ๋์๋ค. ์ด๋ฅผ ์ ์งํค๋ ค๊ณ ๋
ธ๋ ฅ๋ง ํ๋ฉด ๋๋ค. ๋์ถฉ ์ด์ ๋๋ก ์ ํ๋๋ฐ ์ฌ์ฉํ๊ณ ์๋ airbnb ๋ฃฐ์์ ์ด๋์ ๋ ์ปจ๋ฒค์
์ ํต์ผ์์ผ์ฃผ๊ณ ์ฒ์๋ถํฐ ์ธ์ธํ๊ฒ ์ก๊ณ ๊ฐ๊ธฐ์๋ ์๊ฐ์ด ์์ผ๋ฏ๋ก ๋๋จธ์ง ์ปจ๋ฒค์
์ ์ถํ ๊ฐ๋ฐ์ ์งํํด๋๊ฐ๋ฉด์ ํ๊ธฐ๋ก ํ๋ค. ์ญํ ๋ถ๋ฐฐ ์ด์ ์ ๊ณตํต ์ปดํฌ๋ํธ ์์
๋ถ๋ฐฐ ๋๋ ์ถํ์ ์ด ํ๋ก์ ํธ์์ ๊ณต๊ณ ๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ ์บ์ฑํ๋ ์์
(ํ์ด์ง๋ค์ด์
์ด์ฉ)์ ์ํํ๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ ๊ณตํต ์ปดํฌ๋ํธ์์ pagination์ ๋ง๋ค๊ณ ์ถ๋ค๊ณ ํ์๋ค์๊ฒ ์ดํ์ ํ์๋ค. ๋คํํ๋ ๋ด ์๊ฒฌ์ ๋ฐ์๋ค์ฌ์ฃผ์
์ pagination ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ฒ ๋..
eslint ์ค์ airbnb๋ฃฐ์ ๋ฐ๋ฅด๊ธฐ๋ก ํ๋ค. yarn add -D eslint-config-airbnb eslint-config-airbnb-typescript yarn add -D eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks @typescript-eslint/eslint-plugin yarn add -D @typescript-eslint/parser yarn add -D prettier eslint-config-prettier eslint-plugin-prettier ์ ๊ฐ์ด ์ค์น๋ฅผ ์งํํ, { "env": { "browser": true, "es6": true }, "extends..
์
์ฌ๊ณผ์ ๋ฅผ ๋ฐ๋ค..! ์ง์ธ ์ถ์ฒ์ ํตํด ์์ ์คํํธ์
์์ Next.js์ ts๋ก ๊ฐ๋ฐํ๋ ์ง๋ฌด์ ์ฑ์ฉ๋ ๊ธฐํ๋ฅผ ์ป์์๋ค. ์ฐ๋ฝํ์ง ์ผ๋ง ๋์ง ์์ ์
์ฌ๊ณผ์ ๋ฅผ ๋ฐ๊ฒ ๋์๋ค ์ผ์ ํค์ฐ๋ค ์
์ฌ๊ณผ์ ๋ ํฌํธํด๋ฆฌ์ค๋ฅผ ๋ง๋๋ ๊ฒ์ด์๋๋ฐ ๊ฐ๋จํ ๊ณผ์ ์ด์ง๋ง ๋์์ธ ์์์ด ์ฃผ์ด์ง์ง ์๊ณ ํ๊ฐํญ๋ชฉ์๋ ์ฐฝ์์ฑ์ ๊ฐ์กฐํ๊ธฐ ๋๋ฌธ์ ๋์ถฉ ๋ง๋ค๋ค๊ฐ๋ ๋์ ๋์ง ์์ ๊ฒ ๊ฐ์๋ค. ๊ทธ๋์ ๋ด ๋๋ฆ๋๋ก ๊ณผ์ ์ ์ค์ผ์ผ์ ํค์์ ์งํํ๋ค. ๊ณผ์ ๋ฅผ ์งํํ๋ฉฐ ์ฒ์ ์จ๋ณด๋ ๊ธฐ์ ๋ค์ (graphql, supabase)๋ฅผ ์ ์ฉํ๋ฉฐ ๊ณผ์ ๋ฅผ ๋ง๋๋ ์ค์ ์ผ์ฃผ์ผ๋ก๋ ๋ฌด๋ฆฌ์ผ ๊ฒ์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ๋ ํ์ฌ ์คํ๋ฆฐํธ๋ผ๋ ๋ถํธ์บ ํ์ ์ฐธ์ฌํ๊ณ ์๊ณ ํ์ฌ์ ๋ถํธ์บ ํ์ ๋ณํ์ ํ๋ค๊ธฐ ๋๋ฌธ์ ๊ณผ์ ๋ฅผ ์ํํ๋ ์ฃผ๋ง๋์ ์ ๋ง ๋ง์ ๊ณ ๋ฏผ์ ํ๋ค. ์์ง ์ค๊ธ ํ๋ก์ ํธ์ ์ฌ..

๋ฌธ์ ์ ์๊ตฌ์ฌํญ ์์ฒ๋ผ 6๊ฐ์ ๋ชจ๋ฌ์ ๋ง๋ค์ด์ผ ํ๋ค. ๋ด๊ฐ ๋ชจ๋ฌ์ ๋ง๋ ๋ฐฉ๋ฒ export const Modal = ({ modalRef, openModal, handleModalClose, children, }: Props) => { if (!openModal) { return ; } return ( . {children} ); }; ์์ modal์ ์ฌ๋ฌ ๋ชจ๋ฌ์ ๊ณตํต ๋ถ๋ชจ ์ปดํฌ๋ํธ ์ญํ ์ ํ๋ฉฐ, ๋ชจ๋ฌ์ ๊ณตํต์ ์ธ ๊ธฐ๋ฅ๋ค์ ๋ฃ์ด๋์๋ค. ๋ชจ๋ฌ์ ์ฌ๋ ํจ์(openModal์ true๋ก ๋ฐ๊พธ๋ ํจ์)์ ๊ฒฝ์ฐ๋ ๋ชจ๋ฌ์ ์ฌ์ฉํ๋ ์ชฝ์์ ๋ง๋ค์ด์ค์ผ ํ๋ค. ๋ชจ๋ฌ์ ๋ซ๋ ํจ์ ๋ํ ๋ง์ฐฌ๊ฐ์ง์๊ณ , ์ด๊ฒ๋ค์ ๋ชจ๋ฌ์ ์ฌ์ฉํ๋ ์ชฝ์์ ์ผ์ผ์ด state๋ก ์์ฑํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด์๊ธฐ ๋๋ฌธ์ ์ปค์คํ
ํ
์ ๋ง๋ค์๋ค. import {..

์ข์๋ ์ React-hook-form์์ ์ ๊ณตํด์ฃผ๋ ์ปค์คํ
ํ
์ ์ด์ฉํ๋ฉด ์ ๋ง ๊ฐํธํ ํผ์ ์กฐ์ํ ์ ์์๋ค. ๋จ์ํ ์์ฒ๋ผ ์ ๊ณ ์ด๋ฅผ input์ ๋ฃ์ด์ค๋ค๋ฉด ์ด๋ฉ์ผ์ด ๋น์์ ๋, ์ ๊ท์์ ๋ง์ง ์์๋, checkIsDuplicated๋ผ๋ ๋น๋๊ธฐ ํจ์์์ true๊ฐ ์๋ ์๋ฌ๋ฅผ ๋ฆฌํดํ ๋ ๊ฐ๊ฐ ์๋ง์ error๋ฅผ ์ธํ
ํด์ค๋ค. ์ฝ๋๋ ๊ฝค๋ ๊น๋ํ๊ฒ ์งค ์ ์์๊ณ ๋๋ฌด ๋ง์์ ๋ค์๋ค. ๋ณ๋ก ์๋์ ์๋ฌด๊ฒ๋ ์
๋ ฅํ์ง ์๊ณ ์ ์ถ ๋ฒํผ์ ๋๋ฅด๋ฉด react-hook-form์์ ์ ๊ณตํ๋ ํจ์์ธ handleSubmit์ ์คํ์์ผ error๊ฐ ์์์์ api request๋ฅผ ๋ณด๋ด์ง ์๋๋ก ํ์๋ค. ๋ฌธ์ ๋ ์ด handleSubmit์ ์คํํ๋ฉด ์์ ๊ฐ์ด ์๋์ผ๋ก focusing์ด ๋๋ค๋ ๊ฒ์ด๋ค.(์๋ฌ๊ฐ ๋ณด์ฌ์ผ ํ๋๋ฐ ..