์ ์ฒด ๊ธ46 Spring Boot์ Spring Security ํ๋ก์ ํธ์ Swagger ์ ์ฉํ๊ธฐ ์ด๊ธ์ ๋ชฉ์ ์ ํ๋ก์ ํธ API ๊ฐ๋ฐ์ ์ด๋์ ๋ ๋ง์น๊ณ Swagger๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๋ ๊ฒ์ด๋ค. ์ ์ฉํ๊ธฐ์ ์์ ์ด ํ๋ก์ ํธ๋ Spring Boot 2.6.2์ Spring Security๊ฐ ์ ์ฉ๋์๋ค. 1. build.gradle์ ์์กด์ฑ ์ถ๊ฐ //for Swagger implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2' implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' 2. SwaggerConfig ํด๋์ค ์์ฑ config ํจํค์ง ๋ด์ SwaggerConfig ํด๋์ค๋ฅผ ์์ฑํด์ค ๋ค ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ.. 2022. 6. 10. [ํ๋ก๊ทธ๋๋จธ์ค] ๋ฒ ์คํธ์จ๋ฒ (C++) ๋ฌธ์ ์ค๋ช ์คํธ๋ฆฌ๋ฐ ์ฌ์ดํธ์์ ์ฅ๋ฅด ๋ณ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋ ๊ฐ์ฉ ๋ชจ์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ์ํ๋ ค ํฉ๋๋ค. ๋ ธ๋๋ ๊ณ ์ ๋ฒํธ๋ก ๊ตฌ๋ถํ๋ฉฐ, ๋ ธ๋๋ฅผ ์๋กํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ํ ๋ ธ๋๊ฐ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค. ์ฅ๋ฅด ๋ด์์ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค. ์ฅ๋ฅด ๋ด์์ ์ฌ์ ํ์๊ฐ ๊ฐ์ ๋ ธ๋ ์ค์์๋ ๊ณ ์ ๋ฒํธ๊ฐ ๋ฎ์ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค. ๋ ธ๋์ ์ฅ๋ฅด๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด genres์ ๋ ธ๋๋ณ ์ฌ์ ํ์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด plays๊ฐ ์ฃผ์ด์ง ๋, ๋ฒ ์คํธ ์จ๋ฒ์ ๋ค์ด๊ฐ ๋ ธ๋์ ๊ณ ์ ๋ฒํธ๋ฅผ ์์๋๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์. ์ ํ์ฌํญ genres[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋์ ์ฅ๋ฅด์ ๋๋ค. plays[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋๊ฐ ์ฌ์๋ ํ์์ ๋.. 2022. 6. 4. [ํ๋ก๊ทธ๋๋จธ์ค] ์ ํ๋ฒํธ ๋ชฉ๋ก (C++) ๋ฌธ์ ์ค๋ช ์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ ์ค, ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์๋์ง ํ์ธํ๋ ค ํฉ๋๋ค. ์ ํ๋ฒํธ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, ๊ตฌ์กฐ๋ ์ ํ๋ฒํธ๋ ์์์ด์ ์ ํ๋ฒํธ์ ์ ๋์ฌ์ ๋๋ค. ๊ตฌ์กฐ๋ : 119 ๋ฐ์ค์ : 97 674 223 ์ง์์ : 11 9552 4421 ์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ๋ฅผ ๋ด์ ๋ฐฐ์ด phone_book ์ด solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด๋ค ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉด false๋ฅผ ๊ทธ๋ ์ง ์์ผ๋ฉด true๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ์ ํ ์ฌํญ phone_book์ ๊ธธ์ด๋ 1 ์ด์ 1,000,000 ์ดํ์ ๋๋ค. ๊ฐ ์ ํ๋ฒํธ์ ๊ธธ์ด๋ 1 ์ด์ 20 ์ดํ์ ๋๋ค. ๊ฐ์ ์ ํ๋ฒํธ๊ฐ ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค. ๋ฌธ์ ๋ถ์ ํด์๋ฅผ.. 2022. 6. 4. [SQL ๋ ๋ฒจ์ ] 10์ฅ: ์ธ๋ฑ์ค ์ฌ์ฉ ์ธ๋ฑ์ค์ B-tree 1. B-tree ์ธ๋ฑ์ค ํธ๋ฆฌ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ธ๋ฑ์ค ๊ท ํ์กํ ๋ฒ์ฉ์ฑ์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ธ๋ฑ์ค ํธ๋ฆฌ์ ๋ฆฌํ๋ ธ๋์๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ ๋ B+tree ๋ฒ์ ์ ๋ณดํต ์ฌ์ฉ B+tree ํน์ง - ๋ฃจํธ์ ๋ฆฌํ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ ์ผ์ ํ๊ฒ ์ ์งํ์ฌ ๊ท ํ์ด ์ ์กํ ๊ฒ์ ์ฑ๋ฅ์ด ์์ ์ (๋ฐ์ดํฐ ์์ด ์ฆ๊ฐํด๋ ๊ฒ์ ์๋๊ฐ ๊ฐ์๊ธฐ ์ ํ๋๋ ์ผ์ด ์์) - ํธ๋ฆฌ์ ๊น์ด๋ 3-4 ์์ค์ผ๋ก ์ผ์ ํ๊ณ , ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ ์ํ๋ฅผ ์ ์งํ์ฌ ์ด๋ถ ํ์์ ํตํด ๊ฒ์ ๋น์ฉ ์ ๊ฐ ๊ฐ๋ฅ - ์ง์ฝ ํจ์ ๋ฑ์์ ์๊ตฌ๋๋ ์ ๋ ฌ์ ํ์ง ์์ ์ฑ ์คํ ๊ฐ๋ฅ - ๋ฑํธ์ ๋ถ๋ฑํธ๋ฅผ ์ฌ์ฉํ ๊ฒ์ ์กฐ๊ฑด์์ ์ฌ์ฉ ๊ฐ๋ฅ B+tree ๊ตฌ์กฐ 2. ๊ธฐํ ์ธ๋ฑ์ค ๋นํธ๋งต ์ธ๋ฑ์ค ๋ฐ์ดํฐ๋ฅผ ๋นํธ ํ๋๊ทธ๋ก ๋ณํํด ์ ์ฅํ๋ ์ธ๋ฑ์ค ์นด๋๋๋ฆฌํฐ๊ฐ ๋ฎ.. 2022. 5. 23. [ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฐ๋ฌ (C++) ๋ฌธ์ ๋ถ์ - N๊ฐ์ ๋ง์๋ก ๊ตฌ์ฑ - ์๋ฐฉํฅ์ผ๋ก ํตํํ ์ ์๋ ๋๋ก๋ก ์ฐ๊ฒฐ - 1๋ฒ ๋ง์์ ์๋ ์์์ ์์ ๊ฐ ๋ง์๋ก ์์ ๋ฐฐ๋ฌ - N๊ฐ์ ๋ง์ ์ค K ์๊ฐ ์ดํ๋ก ๋ฐฐ๋ฌ์ด ๊ฐ๋ฅํ ๋ง์์ ์ ๋ฐํ ์์ ) ์ ๊ทธ๋ฆผ์์ 1๋ฒ ๋ง์์ ์๋ ์์์ ์ [1, 2, 4, 5] ๋ฒ ๋ง์๊น์ง๋ 3 ์ดํ์ ์๊ฐ์ ๋ฐฐ๋ฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ 3๋ฒ ๋ง์๊น์ง๋ 3์๊ฐ ์ด๋ด๋ก ๋ฐฐ๋ฌํ ์ ์๋ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฏ๋ก 3๋ฒ ๋ง์์์๋ ์ฃผ๋ฌธ์ ๋ฐ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ 1๋ฒ ๋ง์์ ์๋ ์์์ ์ด ๋ฐฐ๋ฌ ์ฃผ๋ฌธ์ ๋ฐ์ ์ ์๋ ๋ง์์ 4๊ฐ๊ฐ ๋ฉ๋๋ค. Dijkstra ์ ํ์ ์ฐ์ตํด๋ณด๊ธฐ ์ํด ํ์ด๋ณธ ๋ฌธ์ ์ด๋ฏ๋ก Dijkstra๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ ํ๋ฆฐ๋ค. ํ์ด ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. 1) road์ ๋ด๊ธด ๊ฐ์ ์ ์ ๋ณด๋ฅผ adj ๋ฒกํฐ์ ์ธ๋ฑ์ค๋ณ๋ก ์ ์ฅํ๋ค. .. 2022. 5. 17. [SQL ๋ ๋ฒจ์ ] 9์ฅ: ๊ฐฑ์ ๊ณผ ๋ฐ์ดํฐ ๋ชจ๋ธ ๊ฐฑ์ ์ ํจ์จ์ ์ผ๋ก 1. NULL ์ฑ์ฐ๊ธฐ val ์ปฌ๋ผ์ NULL์ธ ๋ถ๋ถ์ ์ด์ ๋ ์ฝ๋์ ๊ฐ์ ๊ฐ์์ ์๋ฏธํจ ์ฆ, NULL ๋ถ๋ถ์ ์ด์ ๋ ์ฝ๋์ ๊ฐ์ ๊ฐ์ ์ฑ์๋ฃ์ด์ผ ํจ 1) ๊ฐ์ keycol ํ๋๋ฅผ ๊ฐ์ง 2) ํ์ฌ ๋ ์ฝ๋๋ณด๋ค ์์ seq ํ๋ ๊ฐ์ง 3) valํ๋๊ฐ NULL์ด ์๋ UPDATE OmitTbl SET val = (SELECT val FROM OmitTbl OT1 WHERE OT1.keycol = OmitTbl.keycol AND OT1.seq = (SELECT MAX(seq) FROM OmitTbl OT2 WHERE OT2.keycol = OmitTbl.keycol AND OT2.seq < OmitTbl.seq AND OT2.val IS NOT NULL)) WHERE val IS NULL; .. 2022. 5. 16. [๋ฐฑ์ค] 1477๋ฒ: ํด๊ฒ์ ์ธ์ฐ๊ธฐ Parametric Search ์ฌ์ฉํ๋ ๋ฌธ์ ๋ฅผ ์ฐ์ตํ๊ธฐ ์ํด 1477๋ฒ์ ํ์ด๋ณด์์ผ๋ ์๋ฌด๋ฆฌ ์๊ฐํด๋ ์ด๋ถํ์์ ์ด๋ป๊ฒ ๋๋ ค์ผํ ์ง ๊ฐ์ด ์์๋ค. ๊ฒฐ๊ตญ ๋ดํ์ผ๋ก๋ ์ต์ ํ ๋ฌธ์ ๋ฅผ ๊ฒฐ์ ๋ฌธ์ ๋ก ๋ณํํ ์ ์๋ค๊ณ ํ๋จํด์ ๋ธ๋ก๊ทธ์ ๋์์ ๋ฐ์๋ค. Parametric Search: ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ต์/์ต๋๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ (์ต์ ํ ๋ฌธ์ )๋ฅผ ๊ฒฐ์ ๋ฌธ์ ๋ก ๋ณํํด ์ด๋ถํ์์ ์ํํ๋๋ฐฉ๋ฒ ์๋ ๋ฌธ์ ๋ ํด๊ฒ์ ์๋ ๊ตฌ๊ฐ์ ๊ธธ์ด๋ฅผ ์ต์๋ก ๋ง๋๋ ๊ฒ์ด๋ผ๋ฉด ์ด๋ฅผ ๊ฒฐ์ ๋ฌธ์ ๋ก ๋ณํํด์ ์๋ก ์ธ์ธ ํด๊ฒ์ ๊ฐ์ ๊ธธ์ด๊ฐ X์ผ ๋, ํด๊ฒ์ ๊ฐ์๊ฐ M๊ฐ์ธ๊ฐ ์๋๊ฐ์ ๋ํด ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ค. ์๋ก ์ธ์ธ ํด๊ฒ์ ๊ฐ์ ๊ธธ์ด X๋ ์์ฑ๋ ํด๊ฒ์ ๊ฐ์๊ฐ M๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ๊ธธ์ด๋ฅผ ๋๋ฆฌ๊ณ M๊ฐ ์ดํ์ผ ๊ฒฝ์ฐ ๊ธธ์ด๋ฅผ ์ค์ด๋ ๋ฐฉ์์ผ๋ก ๊ตฌํด์ผ ํ๋ฏ๋ก ์ด.. 2022. 5. 10. [SQL ๋ ๋ฒจ์ ] 8์ฅ: SQL์ ์์ ์์์กฐ์ ๊ธฐ์ด - ๋ ์ฝ๋์ ์๋ฒ ๋ถ์ด๊ธฐ 1. ๊ธฐ๋ณธ ํค๊ฐ ํ ๊ฐ์ ํ๋์ผ ๊ฒฝ์ฐ ์๋์ฐ ํจ์ ์ฌ์ฉ SELECT student_id, ROW_NUMBER() OVER (ORDER BY student_id) AS seq FROM Weights; ์๊ด ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ SELECT student_id, (SELECT COUNT(*) FROM Weights W2 WHERE w2.student_id I/O์์ด ๋์ด๋ SELECT ๊ตฌ๋ฌธ ์ฑ๋ฅ์ด ๋๋น ์ง ์ ์์ผ๋ฉฐ ๊ตฌํ์์กด์ ๋ฐฉ๋ฒ์ 2) ์ธ๋ฑ์ค์ ๋ณต์กํ ํ๋๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐ์ดํฐ์ ๋ถ์ฐ๋๋ฅผ ๋์ -> ๋ณต์กํ ํ๋ ์ถ๊ฐํ ๊ฒฝ์ฐ ๋ถํ์ํ ์๋ฏธ๋ฅผ์์ฑํ๋ฏ๋ก ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ์ดํดํ๊ธฐ ์ด๋ ค์ธ ์ ์์ ๊ฒฐ๋ก : ๋ฆฌ์คํฌ๋ฅผ ์ธ์งํ๊ณ ์ฌ์ฉํ์ 2. IDENTITY ํ๋ - ํ ์ด๋ธ์ ํ๋๋ก ์ ์ํ๊ณ .. 2022. 5. 9. [SQL ๋ ๋ฒจ์ ] 7์ฅ: ์๋ธ์ฟผ๋ฆฌ ์๋ธ์ฟผ๋ฆฌ์ ํํ 1. ์๋ธ์ฟผ๋ฆฌ์ ๋ฌธ์ ์ ์ค์ฒด์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์์ ๋ฌธ์ ๋ฐ์ - ์ฐ์ฐ ๋น์ฉ ์ถ๊ฐ ์๋ธ์ฟผ๋ฆฌ์ ์ ๊ทผํ ๋๋ง๋ค SELECT ๊ตฌ๋ฌธ ์คํํด ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด์ผ ํจ ๋ด์ฉ์ด ๋ณต์กํ ์๋ก ์คํ ๋น์ฉ ๊ธ์ฆ - ๋ฐ์ดํฐ I/O ๋น์ฉ ๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ด ์ถฉ๋ถํ์ง ์๊ฑฐ๋ ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ํด ๊ฒฝ์ฐ ์ ์ฅ์์ ํ์ผ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ์ฌ ์ค๋ฒํค๋ ์ปค์ง ์ ์์ - ์ต์ ํ ๋ถ๊ฐ ์ตํฐ๋ง์ด์ ๊ฐ ์ฟผ๋ฆฌ๋ฅผ ํด์ํ๊ธฐ ์ํด ํ์ํ ์ ๋ณด(๋ช ์์ ์ธ ์ ์ฝ, ์ธ๋ฑ์ค ๋ฑ)๋ฅผ ์๋ธ์ฟผ๋ฆฌ์์ ์ป์ ์ ์์ ๊ฒฐ๋ก : ๋ด๋ถ์ ์ผ๋ก ๋ณต์กํ ์ฐ์ฐ ์ํํ๊ฑฐ๋ ๊ฒฐ๊ณผ ํฌ๊ธฐ๊ฐ ํฐ ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ ์ ์ฑ๋ฅ ๋ฆฌ์คํฌ ๊ณ ๋ คํด์ผ ํจ 2. ์๋ธ์ฟผ๋ฆฌ ์์กด์ฆ ๋ฌธ์ : ๊ณ ๊ฐ๋ณ๋ก ์ต์ ์๋ฒ์ ๊ฐ์ง ๋ ์ฝ๋ ๊ตฌํ๊ธฐ 1) ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ SELECT R1.cust_id, R1.seq, R1.pri.. 2022. 5. 2. ์ด์ 1 2 3 4 5 6 ๋ค์