๋ฌธ์ ์๋ฌธ๋ ์น ๊ณต์ฃผ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ ์ด 25๋ช ์ ์ฌํ์๋ค๋ก ์ด๋ฃจ์ด์ง ์ฌํ์๋ฐ์ 5*5์ ์ ์ฌ๊ฐํ ๊ฒฉ์ ํํ๋ก ์๋ฆฌ๊ฐ ๋ฐฐ์น๋์๊ณ , ์ผ๋ง ์ง๋์ง ์์ ์ด๋ค์๊ณผ ์๋์ฐ์ด๋ผ๋ ๋ ํ์์ด ๋๊ฐ์ ๋ํ๋ด๋ฉฐ ๋ค๋ฅธ ํ์๋ค์ ํ์ด์ก๊ธฐ ์์ํ๋ค. ๊ณง ๋ชจ๋ ์ฌํ์์ด ‘์ด๋ค์ํ’์ ‘์๋์ฐํ’์ ๋ ํ๋ก ๊ฐ๋ผ์ง๊ฒ ๋์์ผ๋ฉฐ, ์ผ๋ง ์ง๋์ง ์์ ‘์๋์ฐํ’๊ฐ ์ธ๋ ฅ์ ํ์ฅ์ํค๋ฉฐ ‘์ด๋ค์ํ’๋ฅผ ์ํํ๊ธฐ ์์ํ๋ค. ์๊ธฐ์์์ ๋๋ ‘์ด๋ค์ํ’์ ํ์๋ค์ ๊ณผ๊ฐํ ํ์ฌ์ ์ฒด์ ๋ฅผ ํฌ๊ธฐํ๊ณ , ‘์๋ฌธ๋ ์น ๊ณต์ฃผ’๋ฅผ ๊ฒฐ์ฑํ๋ ๊ฒ์ด ์ ์ผํ ์์กด ์๋จ์์ ๊นจ๋ฌ์๋ค. ‘์๋ฌธ๋ ์น ๊ณต์ฃผ’๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๋ง์กฑํด์ผ ํ๋ค. ์ด๋ฆ์ด ์ด๋ฆ์ธ ๋งํผ, 7๋ช ์ ์ฌํ์๋ค๋ก ๊ตฌ์ฑ๋์ด์ผ ํ๋ค. ๊ฐํ ๊ฒฐ์๋ ฅ์ ์ํด, 7๋ช ์ ์๋ฆฌ๋ ์๋ก ๊ฐ๋ก๋ ์ธ๋ก๋ก ๋ฐ๋์ ์ธ์ ํด ์์ด์ผ..
๋ฌธ์ ๋จ์ด ์๊ธฐ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ ์ค์์ด๋ ์์ด ๋จ์ด๋ฅผ ์ธ์ฐ๋ ค๊ณ ํ๋ค. ์ฌ์ ์๋ N๊ฐ์ง ๋จ์ด๊ฐ ์ ํ ์๋ค. ๋ชจ๋ ๋จ์ด๋ ์๋ฌธ์์ด๋ค. ๋จ์ด ์์ ์๋ ๋ชจ๋ ์ํ๋ฒณ์ ์ ๋, ๊ทธ ๋จ์ด๋ฅผ ์์ ํ ์๋ค๊ณ ํ๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๋ค์ด ์ฃผ์ด์ง๋ค. 1 x : ์ํ๋ฒณ x๋ฅผ ์๋๋ค. 2 x : ์ํ๋ฒณ x๋ฅผ ๊ธฐ์ตํด ๋ธ๋ค. ์ฒ์์ ๋ชจ๋ ์ํ๋ฒณ์ ๊ธฐ์ตํ๋ ์ํ๊ณ , ๋ชจ์์ ์๋ฒฝํ๊ฒ ์ธ์ ๊ธฐ ๋๋ฌธ์ ์ ๋ ์์ง ์๋๋ค. ๊ฐ ์ฟผ๋ฆฌ๋ง๋ค ์์ ํ ์๊ณ ์๋ ๋จ์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ์ฌ๋ผ. ํ์ด ๋จ์ด์ ๊ธธ์ด๊ฐ 10^3์ด๋ ๋๋ฏ๋ก ์ผ์ผ์ด ๋น๊ตํ๊ธฐ ํ๋ฌ bit ์ฐ์ฐ์ ํตํด ๋น๊ตํ ์ ์๋ ๋ฐฉ์ ์๊ฐ ์ํ๋ฒณ 26์๋ฆฌ๋ฅผ bitmap์ผ๋ก ๋ํ๋ผ ๋ 2^26 < (2^3)^9 < 10^10 ์ด๋ฏ๋ก ์ถฉ๋ถํ int ํ์ผ๋ก ํํ ๊ฐ๋ฅ ์ฝ๋ #include #incl..
๋ฌธ์ ๊ฐ๋ฅด์นจ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ ๋จ๊ทน์ ์ฌ๋ ๊น์ง๋ฏผ ์ ์๋์ ํ์๋ค์ด ๋๋๋ก์ด๋ฉด ๋ง์ ๋จ์ด๋ฅผ ์ฝ์ ์ ์๋๋ก ํ๋ ค๊ณ ํ๋ค. ๊ทธ๋ฌ๋ ์ง๊ตฌ์จ๋ํ๋ก ์ธํด ์ผ์์ด ๋ น์์ ๊ณง ํ๊ต๊ฐ ๋ฌด๋์ง๊ธฐ ๋๋ฌธ์, ๊น์ง๋ฏผ์ K๊ฐ์ ๊ธ์๋ฅผ ๊ฐ๋ฅด์น ์๊ฐ ๋ฐ์ ์๋ค. ๊น์ง๋ฏผ์ด ๊ฐ๋ฅด์น๊ณ ๋ ํ์๋, ํ์๋ค์ ๊ทธ K๊ฐ์ ๊ธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋จ์ด๋ง์ ์ฝ์ ์ ์๋ค. ๊น์ง๋ฏผ์ ์ด๋ค K๊ฐ์ ๊ธ์๋ฅผ ๊ฐ๋ฅด์ณ์ผ ํ์๋ค์ด ์ฝ์ ์ ์๋ ๋จ์ด์ ๊ฐ์๊ฐ ์ต๋๊ฐ ๋๋์ง ๊ณ ๋ฏผ์ ๋น ์ก๋ค. ๋จ๊ทน์ธ์ด์ ๋ชจ๋ ๋จ์ด๋ "anta"๋ก ์์๋๊ณ , "tica"๋ก ๋๋๋ค. ๋จ๊ทน์ธ์ด์ ๋จ์ด๋ N๊ฐ ๋ฐ์ ์๋ค๊ณ ๊ฐ์ ํ๋ค. ํ์๋ค์ด ์ฝ์ ์ ์๋ ๋จ์ด์ ์ต๋๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ํ์ด brute force๋ก ์ฐพ๊ธฐ (N์ด ์์) ์กฐ๊ฑด๋ค์ ์ด์ฉํ์ฌ ์ต๋ํ ์๊ฐ๋ณต์ก๋ ์ค์ด๊ธฐ ..
๋ฌธ์ ์๋ง๋ค ์ฐ์ฐ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ ๊ฒฝ์ฌ์จ๋ ์ ๋ ์ฝ์์ ๊ฐ๊ธฐ ์ ์ฑ๊ธฐ์ง ์์ ๋ฌผ๊ฑด๋ค์ด ์๋ ์ง ํ์ธํ๊ณ ์๋ค. ํ์ํ ๋ฌผ๊ฑด์ ์ ๋ถ ์ฑ๊ธด ๊ฒ ๊ฐ์๊ณ ์ธ์ถ ํ ๋์์ค๋ ๊ธธ์ ๊ฒฝ์ฌ์จ๋ ์ธ์ณค๋ค. "์ ๋ง๋ค ์ฐ์ฐ!!!" ๊ฒฝ์ฌ ์จ๋ ๋งค๋ฒ ์ธ์ถํ๊ณ ๋์์ผ ์ด๋ค ๋ฌผ๊ฑด์ ์ง์ ๋๊ณ ์๋ค๋ ๊ฒ์ ๋ ์ฌ๋ฆด ๋๋ง๋ค ์์ฑ ๊ฐ์ ์๋ฌ๋ฆฌ๋ ๊ฒ์ด ๋๋ฌด ์ซ์๋ค. ์ธ์ถ์ด ์ฆ์ ๊ฒฝ์ฌ ์จ๋ ๋ฐ๋ณต๋๋ ์ผ์ ๊ทผ์ ํ๊ธฐ ์ํด ๊ผญ ์ฑ๊ฒจ์ผ ํ ๋ฌผ๊ฑด๋ค์ ์ ๋ฆฌํด๋ณด์๋ค. ํ์ง๋ง ์ง๊ฐ, ์ค๋งํธํฐ, ์ฐ์ฐ, ์ฐจ ํค, ์ด์ดํฐ, ์๊ณ, ๋ณด์กฐ ๋ฐฐํฐ๋ฆฌ ๋ฑ ์ข ๋ฅ์ ๊ฐ์๊ฐ ๋๋ฌด ๋ง์๋ค. ํ์ ๋ถํ์ํ ์์ง์์ ์์ฃผ ์ซ์ดํ๋ ๊ฒฝ์ฌ ์จ๋ ์ด ๋ฌผ๊ฑด๋ค์ ์ต๋ํ ๋น ๋ฅด๊ฒ ์ฑ๊ฒจ์ ์ธ์ถํ๋ ์ด๋ ๊ฒฝ๋ก๋ฅผ ์๊ณ ์ถ์๋ค. ๊ฒฝ์ฌ ์จ๋ ํ ๊ฑธ์์ ์ํ์ข์ฐ์ ์ธ์ ํ ์นธ์ผ๋ก๋ง ์์ง์ผ ์ ์๋ค. ๊ฒฝ์ฌ ์จ..
์ธ์ฆ ๋ฐฉ์ 1. API key๋ฅผ ํตํ ์ธ์ฆ ๊ณผ์ user๊ฐ login ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋ค. Client๋ ์ด๋ฏธ Server์ ๋ฑ๋กํ API key๋ฅผ ๊ฐ์ง๊ณ ์๋ค. Client๋ user๊ฐ ์ ๋ ฅํ Login ์ ๋ณด๋ฅผ ๋ฐ์์ API key์ ํจ๊ป Login API๋ฅผ ์์ฒญํ๋ค. Server๋ API key๋ฅผ ํตํด ํด๋น Client๊ฐ ๋ฑ๋ก๋์ด์๋ ์ง๋ฅผ ๊ฒ์ฌํ๋ค. Sever๋ Login ์ ๋ณด๋ฅผ ํตํด ํด๋น User๊ฐ API๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ง๋ฅผ ๊ฒ์ฌํ๋ค. ๋จ์ API key๋ ๋ชจ๋ Client๋ค์ด ๊ณตํต์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ ธ์ถ๋๋ฉด ์ ์ฒด API๊ฐ ๋ ธ์ถ๋๋ค. API key๋ ์๊ฐ์ด ๋ฌด์ ํ์ด๊ณ ํ ๋ฒ ๋ ธ์ถ๋๋ฉด API key ๋ณ๊ฒฝ ์ ๊น์ง ๊ณ์ ๋ ธ์ถ๋๋ค. 2. API Token์ ํตํ ์ธ์ฆ ๊ณผ์ user๊ฐ login ์ ๋ณด๋ฅผ ์ ..
๊ธฐ์กด์ ์ํคํ ์ฒ ๊ธฐ์กด์ ์ํคํ ์ฒ๋ Monolitic ์ํคํ ์ฒ๋ก ํ๋์ ์ฝ๋ ๋ฒ ์ด์ค์ ํ๋์ ๋ฐฐํฌ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ํคํ ์ฒ๋ฅผ ๋ปํ๋ค. ์๋น์ค ๋ณ๋ก ๋๋์ด์ ธ์์ง ์์ผ๋ฉฐ ํ๋์ ์๋น์ค๋ฅผ ๊ฐฑ์ ํ์ฌ ๋ฐฐํฌํ๊ณ ์ ํ๋ฉด ๋ชจ๋ ์๋น์ค๊ฐ ๋ค์ ๋ฐฐํฌ ๋๋ค. MSA ์ฅ์ ๊ฐ๋จํ๋ค. ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋ค. MSA ๋จ์ ๋น๋ ์๊ฐ, ํ ์คํธ ์๊ฐ, ๋ฐฐํฌ ์๊ฐ์ด ๋น ๋ฅด๊ฒ ์์นํ๋ค. ํ๋์ ์๋น์ค์ ์ฅ์ ๊ฐ ์ ์ฒด ์๋น์ค๋ก ์ด์ด์ง ์ ์๋ค. ์๋น์ค์ ์ํฅ๋๋ ์ ์ฒด ์์คํ ์ ํ์ ์ด ์ด๋ ต๋ค. MSA ๊ตฌ์กฐ UI layer ๋น์ฆ๋์ค ๋ก์ง layer ๋ฐ์ดํฐ ์ ๊ทผ layer DB Micro Service Architecture MSA๋ ๋ฐฐํฌ ๋จ์๋ฅผ ์๋น์ค ๋ณ๋ก ์ชผ๊ฐ ์ํคํ ์ฒ๋ฅผ ๋ปํ๋ค. ๋น๊ตํ์๋ฉด ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค. MSA ํน์ง ๊ฐ ์๋น์ค๋ mono..
Refresh token์ ์ฅ์ ๋ณธ์ธ์ ์๋ API ์์ฒญ ์ ๋งค๋ฒ Access Token์ ๋ฐ๊ธํ๋ ์์ผ๋ก API๋ฅผ ๊ตฌ์ฑํ์๋๋ฐ, ์ด๋ ๊ฒ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ๋ง์์ง ์๋ก ์์คํ ๋ถํ๊ฐ ์ฆ๊ฐํ๋ค. ๋ฐ๋ผ์ Refresh Token์ ๋ฐ๊ธํ๋ ๊ฒ์ด ๋ซ๋ค. ๋ํ, refresh token์ด ์์ ๊ฒฝ์ฐ access token์ ์ ํจ ์๊ฐ์ ์งง๊ฒ ํ์ฌ ํ์ทจ ์ ๋น ๋ฅด๊ฒ ๋ฌดํจํ ์ํฌ ์ ์๋ค. Refresh token์ ๋์ Access Token์ ํตํด User๊ฐ request๋ฅผ ๋ณด๋ด๊ณ , ์ ํจ ์๊ฐ์ด ๋ง๋ฃ ๋์๋ค๋ ์๋ต์ ๋ฐ๋๋ค. User๋ Access Token๊ณ ํจ๊ป Refresh Token์ ์๋ฒ๋ก ๋ณด๋ธ๋ค. Refresh Token์ด ์ ํจํ๋ค๋ฉด ์ ํจ์๊ฐ์ด ๊ฐฑ์ ๋ Access Token์ด ์๋ก ๋ฐ๊ธ๋์ด User..
token์ cookie์ ์ ์ฅํ ์๋, Web Storage์ ์ ์ฅํ ์๋, Client ์์ฒด์ ์ ์ฅํ ์๋ ์๋ค. Cookie ์ฟ ํค๋ ์๋ฒ๊ฐ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ ์ต๋ 4KB๊น์ง ์ ์ฅ ๊ฐ๋ฅํ๋ค. ํด๋ผ์ด์ธํธ์์ Credential ์์ฑ์ผ๋ก ํ์ฉํ๋ฉด ์๋ฒ์์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค. HTTP Request ์ ์๋์ผ๋ก ํฌํจ๋์ด ์๋ฒ์ ์ฟ ํค ์ ๋ณด๋ฅผ ์ ๊ณต ๊ฐ๋ฅํ๋ค. HttpOnly ์ค์ ์ ์ด์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ ์ดํ ์ ์๋๋ก ๋ง๋ค ์ ์๋ค. Web Storage Session Storage ์๋ฒ์์ ์ ๊ทผํ ์ ์๋ค. ์ธ์ ์ด ์ข ๋ฃ๋๋ฉด ๋ชจ๋ ์ญ์ ๋๋ค. 5~10MB์ ํฌ๊ธฐ๋ฅผ ๊ฐ๋๋ค. Local Storage ์๋ฒ์์ ์ ๊ทผํ ์ ์๋ค. ๋ฐ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ ์ ์๋ค. 5~10MB์ ํฌ๊ธฐ๋ฅผ ๊ฐ๋๋ค. Client Side ํด๋ผ์ด์ธํธ ..
Comment