์ ์ฒด ๊ธ
-
[Clean Code] ํ์ ๋ง์ถ๊ธฐDev/์ ๋ฆฌ 2022. 5. 17. 21:03
ํฌ๋งทํ ์ด ์ค์ํ ์ด์ 1. ๊ฐ๋ ์ฑ์ ํ์์ ์ด๋ค ์ฝ๋๋ฅผ ์์ํ๊ฒ ์ฝ์ด๋๊ฐ ์ ์๋ค. ์๋ง์ถ์ด์ฒ๋ผ ๋ณด์ด์ง ์๋๋ค. ํฌ๋งทํ ์ผ๋ก ์ธํด ์ฝ๋๋ฅผ ์๋ชปํด์ํด ๋ฒ๊ทธ๋ฅผ ๋ฐ์ํ ์ํ์ ์ค์ธ๋ค. 2. 200๋ผ์ธ ํ์ ์์์ ๋๋ถ๋ถ์ ์ฝ๋๋ค๋ 200๋ผ์ธ ์ ๋๋ฅผ ์ ์งํ๋ค ์ฝ๋ ๊ธธ์ด๊ฐ 200๋ผ์ธ์ ๋์ด๊ฐ๋ค๋ฉด, ํด๋์ค๊ฐ ์ฌ๋ฌ ๊ฐ์ ์ผ์ ํ๊ณ ์์ ์ ์๋ค. SRP์ ์๋ฐฐ๋๋ค. 3. ๋ฐ์ ํ ๊ฐ๋ ์ ์๋ก ๊ฐ๊น์ด ๋๋ค. ํ ๋ฌถ์์ ์๊ฒฐ๋ ์๊ฐ ํ๋๋ฅผ ํํํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ ๋น ํ์ผ๋ก ๋ถ๋ฆฌํ๋ค. ๋ณ์๋ ์ฌ์ฉ๋๋ ์์น์์ ์ต๋ํ ๊ฐ๊น์ด ์ ์ธํ๋ค. Java Class Declarations Class ๋ด๋ถ ์ฝ๋ ์์ 1. static ๋ณ์ public -> protected -> package -> private ์์ 2. instance ๋ณ..
-
[Clean Code] ํจ์Dev/์ ๋ฆฌ 2022. 5. 15. 11:24
SOLID (๊ฐ์ฒด์งํฅ์ค๊ณ) ๊ฐ์ฒด์งํฅ ์ค๊ณ์ 5๊ฐ์ง ์์น 1. SRP ๋จ์ผ ์ฑ ์ ์์น ํ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค. ํด๋์ค๋ ํ๋์ ๊ธฐ๋ฅ๋ง ๊ฐ์ง๋ฉฐ, ์ด๋ค ๋ณํ์ ์ํด ํด๋์ค๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ์ด์ ๋ ์ค์ง ํ๋๋ฟ์ด์ฌ์ผ ํ๋ค. SRP ์ฑ ์์ด ๋ถ๋ช ํด์ง๊ธฐ ๋๋ฌธ์, ๋ณ๊ฒฝ์ ์ํ ์ฐ์์์ฉ์์ ์์ ๋ก์ ์ง ์ ์๋ค. ๊ฐ๋ ์ฑ ์์๊ณผ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํด์ง๋ค. ์ค์ ์๋ ์ฝ์ง ์์ง๋ง ๋ ์๊ธฐํด์ผ ํ๋ค. 2. OCP ๊ฐ๋ฐฉ/ํ์ ์์น ์ํํธ์จ์ด ์์๋ ํ์ฅ์๋ ์ด๋ ค ์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค. ๋ณ๊ฒฝ์ ์ํ ๋น์ฉ์ ์ค์ด๊ณ , ํ์ฅ์ ์ํ ๋น์ฉ์ ๊ฐ๋ฅํ ๊ทน๋ํ ํด์ผ ํ๋ค. ์๊ตฌ์ฌํญ์ ๋ณ๊ฒฝ์ด๋ ์ถ๊ฐ์ฌํญ์ด ๋ฐ์ํ๋๋ผ๋, ๊ธฐ์กด ๊ตฌ์ฑ์์์๋ ์์ ์ด ์ผ์ด๋์ง ์๊ณ , ๊ธฐ์กด ๊ตฌ์ฑ์์๋ฅผ ์ฝ๊ฒ ํ์ฅํด์ ์ฌ์ฌ์ฉํ๋ค. ๊ฐ์ฒด์งํฅ์ ์ถ์ํ์ ..
-
[Clean Code] ๊นจ๋ํ ์ฝ๋, ์๋ฏธ ์๋ ์ด๋ฆDev/์ ๋ฆฌ 2022. 5. 14. 21:22
๋์ ์ฝ๋๋? - ์ฑ๋ฅ์ด ๋์ ์ฝ๋ - ์๋ฏธ๊ฐ ๋ชจํธํ ์ฝ๋ - ์ค๋ณต๋ ์ฝ๋ ๋์ ์ฝ๋๊ฐ ๋์ ์ด์ - ๊นจ์ง ์ ๋ฆฌ์ฐฝ ๋ฒ์น ๋์ ์ฝ๋๋ ๊นจ์ง ์ ๋ฆฌ์ฐฝ์ฒ๋ผ ๊ณ์ ๋์ ์ฝ๋๊ฐ ๋ง๋ค์ด์ง๋๋ก ํ๋ค. - ์์ฐ์ฑ ์ ํ ๋์ ์ฝ๋๋ ์์ฐ์ฑ์ ์ ํ ์ํจ๋ค. - ์๋ก์ด ์์คํ ์ ๋ง๋ค์ด์ผํ๋ค ํ์์คํ ์ ์ ์ง๋ณด์ํ๋ฉฐ, ๋์ฒดํ ์๋ก์ด ์์คํ ๊ฐ๋ฐ์ ํ์ค์ ์ผ๋ก ๋งค์ฐ ์ด๋ ต๋ค. ํด๋ฆฐ ์ฝ๋ - ์ฑ๋ฅ์ด ์ข์ ์ฝ๋ - ์๋ฏธ๊ฐ ๋ช ํํ ์ฝ๋(= ๊ฐ๋ ์ฑ์ด ์ข์ ์ฝ๋) - ์ค๋ณต์ด ์ ๊ฑฐ๋ ์ฝ๋ -> ๋ช ๋ฃํ ์ฝ๋ ๊ฐ๋จํ ์ฝ๋ - ๋ชจ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ค. - ์ค๋ณต์ด ์๋ค. - ์์คํ ๋ด ๋ชจ๋ ์ค๊ณ ์์ด๋์ด๋ฅผ ํํํ๋ค. - ํด๋์ค, ๋ฉ์๋, ํจ์ ๋ฑ์ ์ต๋ํ ์ค์ธ๋ค. ์๋ฏธ ์๋ ์ด๋ฆ ์ง๊ธฐ - ์๋๋ฅผ ๋ถ๋ช ํ ๋ฐํ๊ธฐ // ์๋ชป๋ ๋ณ์ int a; String..
-
AWS Error Code: SignatureDoesNotMatch ํด๊ฒฐ๋ฐฉ๋ฒ์ฝ์ง๋ชจ์/์๋ฌํด๊ฒฐ 2022. 5. 2. 19:04
๋ก์ปฌ์์ ์ ์์ ์ผ๋ก ํ์ผ ์ ๋ก๋๊ฐ ๋๋ ๊ฒ์ ํ์ธํ์๋๋ฐ, ์๋ฒ ๋ฐ์ ํ com.amazonaws.services.s3.model.AmazonS3Exception: The request signature we calculated does not match the signature you provided. key๋ฅผ ํ์ธํด๋ณด๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค. ๊ตฌ๊ธ๋ง ํด๋ณด๋ yml์ ์ ํ์ง SecretKey ์ / ๋ % ๊ฐ ์์ผ๋ฉด ์ธ์์ด ์๋๋ ๋ฌธ์ ์ด๋ค. ํด๊ฒฐ๋ฐฉ๋ฒ / ๋ % ๊ฐ ์๋ SecretKey๊ฐ ์์ฑ๋ ๋ ๊น์ง ์ก์ธ์คํค๋ฅผ ๋ง๋ ํ, yml์ ์๋ ํค๋ฅผ ๋ณ๊ฒฝํด์ค๋ค.
-
[์๊ณ ๋ฆฌ์ฆ] ์ต๊ทผ์ ์ ์ ์ฐพ๊ธฐComputer Science/Algorithm 2021. 12. 16. 03:06
์ต๊ทผ์ ์ ์ ์ฐพ๊ธฐ 2์ฐจ์ ํ๋ฉด์์ ์๋ N๊ฐ์ ์ ๋ค ์ค์์ ์๋ก์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ ์ ์ ์ฐพ๋ ๋ฌธ์ ๊ฐ๋จํ ๋ฐฉ๋ฒ ๋ชจ๋ ์์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ชจ๋ ๊ณ์ฐํ์ฌ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ ์ฐพ๋ ๊ฒ ์๊ฐ ๋ณต์ก๋ O(N^2) ์ ๋ ฌ์ ์ฌ์ฉํ ๋ฐฉ๋ฒ ํฉ๋ณ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์์ ์ฌ์ฉํ๋ ๋ถํ -์ ๋ณต ๊ธฐ๋ฒ์ ์ฌ์ฉ ์๊ฐ ๋ณต์ก๋ O(N log N) ๋ถํ -์ ๋ณต ๊ธฐ๋ฒ์ ์ฌ์ฉํ ์ต๊ทผ์ ์ ์ ์ฐพ๊ธฐ ์๊ณ ๋ฆฌ์ฆ X ์ขํ ๊ฐ์ ์ฌ์ฉํด ์ ์ ์ ๋ ฌํ ๋ค์ ๋ฐ์ผ๋ก ๋๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ ์ด๋ฃจ๋ ๋ ์ ์ ๋ชจ๋ ํ์ชฝ ์ ๋ฐ์ ์๋ ์ง ์๋๋ฉด ํ๋๋ ํ์ชฝ ์ ๋ฐ์, ๋ค๋ฅธ ํ๋๋ ๋๋จธ์ง ์ ๋ฐ์ ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ ์ด๋ฃจ๋ ๋ ์ ์ด ๋ถํ ์ (dividing line)์ ๊ฐ๋ก์ง๋ฅด๋ ๊ฒฝ์ฐ ํจ๊ณผ์ ์ผ๋ก ๊ฒ์ฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ํ์ ์๊ณ ๋ฆฌ์ฆ ๋์ ๊ณผ์ ๋์ ๊ณผ์ ์ ํ๋ก ๋ํ ๋ผ ์๋ ์..
-
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ผํจ ์ค์บ ์๊ณ ๋ฆฌ์ฆComputer Science/Algorithm 2021. 12. 15. 12:28
๊ทธ๋ผํจ ์ค์บ ์๊ณ ๋ฆฌ์ฆ 1972๋ ๋ก๋ ๋ ๊ทธ๋ผํจ์ ์ํด ๊ฐ๋ฐ๋ ์๊ณ ๋ฆฌ์ฆ ์ฃผ์ด์ง ์ ์งํฉ์ผ๋ก๋ถํฐ ๋จ์ ํ์ ๋ค๊ฐํ์ ๋ง๋ ๋ค์, y์ขํ ๊ฐ์ด ๊ฐ์ฅ ์์ ์ ๋ถํฐ ์์ํด ๋ค๊ฐํ์ ๊ผญ์ง์ ๋ค์ ์์๋๋ก ๋ฐฉ๋ฌธํ๋ฉด์ ๋ณผ๋ก ๊ป์ง์ ํฌํจ๋ ์ง ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ ๊ฒ์ด๋ค. ๋ณผ๋ก ๊ป์ง์ ํฌํจ๋๋์ง ๊ฒ์ฌ ๋ฐฉ๋ฒ p[1], p[2], ..., p[M]์ด ๋ถ๋ถ ๋ณผ๋ก ๊ป์ง์ด๋ผ ํ๊ณ ์๋ก์ด ์ p[i]๋ฅผ ์ถ๊ฐํ๊ณ ์ ํ ๋, ccw(p[M], p[M-1], p[i])≥ 0 ์ด๋ฉด p[M]์ ์ ๊ฑฐ p[M-1], p[M], p[i]๊ฐ ์ฐํ์ ์ด๋ฉด, p[M]์ ์ ๊ฑฐํ๊ณ , ์ขํ์ ์ด๋ฉด p[i]๋ฅผ ํฌํจํ๋ค. ๊ทธ๋ผํจ ์ค์บ ์๊ณ ๋ฆฌ์ฆ ๋์ ๊ณผ์ ๋จผ์ y ์ ์ด ๊ฐ์ฅ ์์ ์ ์ ์ ํํ ํ, ๊ทธ ์ ์์ ๋ถํฐ ๊ฐ์ฅ ์์ ๊ฐ๋๋ฅผ ๋ง๋๋ ์์๋๋ก ๋ฒํธ๋ฅผ ๋งค๊ฒจ์ค๋๋ค. ์ฒ์ ..
-
[์๊ณ ๋ฆฌ์ฆ] ์ต์ ์ด์ง ํ์ ํธ๋ฆฌComputer Science/Algorithm 2021. 12. 14. 20:02
์ต์ ์ด์ง ํ์ ํธ๋ฆฌ ํธ๋ฆฌ ๋ด์ ํค์ ๊ฐ ํค๊ฐ ํ์๋ ํ๋ฅ ์ด ์ฃผ์ด์ ธ ์์ ๋, ๊ทธ ํธ๋ฆฌ์ ํ๊ท ํ์ ๋น์ฉ, ์ฆ ํ๊ท ๋น๊ต ํ์๋ฅผ ๊ณ์ฐํ๊ณ ์ด๋ฅผ ์ต์ํํ๋ ํ์ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ ๋ฌธ์ ์ด์ง ํ์ ํธ๋ฆฌ ๋ฃจํธ์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ์๋ ์์์ ํค ๊ฐ์ ๋ฃจํธ๋ณด๋ค ์๊ณ , ๋ฃจํธ์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ์๋ ์์์ ์นด ๊ฐ์ ๋ฃจํธ๋ณด๋ค ํฐ ์ด์ง ํธ๋ฆฌ ์ ํ์ ์ต์ ์ด์ง ํ์ ํธ๋ฆฌ ๊ตฌํ๊ธฐ 1. A[i, j] ํ ์ด๋ธ๊ณผ k ํ ์ด๋ธ์ ๊ทธ๋ ค์ค๋๋ค. Aํ ์ด๋ธ ๋๊ฐ์ ์, ๋ฌธ์ ์์ ์ฃผ์ด์ง ํ๋ฅ ์ Kํ ์ด๋ธ ๋๊ฐ์ ์, ์์๋๋ก ์ด๊ธฐ ๊ฐ์ ์ ์ด์ค๋๋ค. 2. ์ ํ์์ ์ด์ฉํ์ฌ ํ ์ด๋ธ์ ๊ฐ์ ์ฑ์์ค๋๋ค. 3. ์ด์ง ํ์ ํธ๋ฆฌ ๊ทธ๋ฆฌ๊ธฐ - kํ ์ด๋ธ์์ 1ํ ๊ฐ์ฅ ๋งจ ๋ ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค. k[1, 4] = 3 ๊ฐ์ด 3์ด๊ธฐ ๋๋ฌธ์, ์ด๋ 3๋ฒ ๋ ธ๋๊ฐ ์ต์๋จ์์ ..
-
[์๊ณ ๋ฆฌ์ฆ] ์คํธ๋ง ํธ์ง ๊ฑฐ๋ฆฌComputer Science/Algorithm 2021. 12. 14. 19:19
์คํธ๋ง ํธ์ง ๊ฑฐ๋ฆฌ(string edit distance) ๋ ์คํธ๋ง์ ์ ์ฌ๋๋ฅผ ์ธก์ ํ๊ธฐ ์ํด ์ฌ์ฉ Levenshtein distance(LD)๋ผ๊ณ ๋ ํจ ์๋ ์คํธ๋ง์ S, ๋ชฉํ ์คํธ๋ง์ T S๋ฅผ T๋ก ๋ณํํ๋ ๋ฐ ํ์ํ ์ฝ์ , ์ญ์ , ๋์น ์ฐ์ฐ์ ์ต์ ๋น์ฉ ํธ์ง ๊ฑฐ๋ฆฌ๊ฐ ์ปค์ง์๋ก, ๋ ์คํธ๋ง์ ์ ์ฌ๋๋ ๋ฎ์์ง๊ฒ ๋จ ๋ ผ๋ฌธ์ด๋ ๋ณด๊ณ ์์ ํ์ ๊ฒ์ฌ, DNA ์ผ๊ธฐ ์์ด์ ์ ์ฌ๋ ๊ฒ์ฌ ๋ฑ์ ์ฌ์ฉ๋จ ๋์ ๊ณํ๋ฒ์ ์ ์ฉ ์คํธ๋ง ํธ์ง ๊ฑฐ๋ฆฌ ์์๋ฅผ ๋ค์ด ์ค๋ช ํ๊ฒ ์ต๋๋ค. S = GUMBO T = GAMBOL U -> A ๋ก ๊ต์ฒด L ์ ์ถ๊ฐ ๋ฐ๋ผ์, GUMBO๋ฅผ GAMBOL๋ก ๋ณ๊ฒฝํ๋ ์ต์ ํธ์ง ๊ฑฐ๋ฆฌ๋ 2์์ ์ ์ ์์ต๋๋ค. ์คํธ๋ง ํธ์ง ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ธฐ ์ํด์ , ๊ฐ๋จํ ํ๋ก ์์ฑํ์ฌ ๊ตฌํ ์ ์์ต๋๋ค. 1. ์ด๊ธฐ ํ ์ด๋ธ์ ..