๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง๐๐
๐ป
โถ ๐ท๐๐๐๐๐๐ ๐บ๐๐๐๐๐๐
Python ๋ฌธ์ ํ์ด๋ฅผ ์์ํ์ต๋๋ค. ๊ฒธ์ํ๊ฒ ๋ค์ ์์ํ์๋ ๋ง์๊ฐ์ง์ผ๋ก Greedy Algorithm
๋ถํฐ ํ์ด๋๊ฐ๊ณ ์์ต๋๋ค. 1์๋ฌ ์์ solved.ac Platinum์ ๋ค๋ ๊ฒ์ด ๋ชฉํ์
๋๋ค. (์ฌ์ค ๋ฐฉ๊ธ๊น์ง๋ Bronze๋ก ๋จ๊ธธ๋, ์ฅ๋ฒฝ์ด ์ ๋ง ๋์๊ฐ๋ณด๋ค ์ถ์์ต๋๋ค๋ง ํ๋กํ๋ ๊ฐ์ฅ ํ๋จ์ ๊ฐ์ ๋ก ์ ๋ณด๋ฅผ ๊ฐฑ์ ์ ํด๋ฆญํ๋ ๋ฌธ์ ํฌ๋กค๋ง์ด ์ ๋๋ก ์๋ฃ๋์ด ๊ณจ๋๊ฐ ๋์๋ค์!)
Greedy Algorthm ๋จ์ด ์ํ๊ณผ ์บ ํ์ ํ์์ต๋๋ค. ๋จ์ด ์ํ์ ํ์ด๋ฅผ ๋ณด์๋๋ฐ, ๊ธฐ๋ณธ ๋ฌธ๋ฒ๋ง ๋์ ๋ฟ ์ฌํ ๋ถ๋ถ์ ๊ณต๋ถํ์ง ๋ชปํ๋ ์ ๋ก์๋ ๊ต์ฅํ ์ถฉ๊ฒฉ์ ์ธ ํํ๋ ฅ์ ๋๋์ต๋๋ค. ๊ณต๋ถ๋ฅผ ํตํด lambda
์ map
๊ทธ๋ฆฌ๊ณ list comprehension
์ ์ดํดํ๊ฒ ๋์์ต๋๋ค.
โถ ๐๐๐ฉ๐๐ช๐
(1) BBBBFF ๋ ํ์งํ ๋ฆฌ์์ ์ด์ ํ
์คํธ์ฉ github Issue ๋ฑ๋ก
์ ํด๋ณด์์ต๋๋ค.
(2) TIL ์์ฑ๊ณผ Github ์ ๋ฆฌ๊ฐ ๋ง๋ฟ์ ์ ์๋๋ก ์ฌ๋ฌ๋ชจ๋ก ๊ณ ๋ฏผํด๋ณด๊ณ ์์ต๋๋ค. ์ด์ withBackendRoadmap๊ณผ ProblemSolving ๋ฑ ์ํ์ ์ธ ์ฌ๋ฌ ๊ฐ์ ๋ ํ์งํ ๋ฆฌ๋ฅผ ์ด์ํด๋ณด๊ณ ์์ต๋๋ค. ์ฐ์ ์ ์ผ๋ก ์ ์ฉ ์ค์ธ ๋ฐฉ์์ (1) ์ฝ๋ ์์ฃผ์ ๊ฒ์๊ธ(ํ์ ์๊ฐ ์ ๋ฆฌ๋ด์ญ)๊ณผ, ์ค๊ธ์ด ํฌํจ๋๋ ์ดํ์ ํ์๋๋ ๋ค์์ ์ฝ๋๊ฐ ์๋ ๊ฒ์๊ธ(ProblemSolving)์ Repository์ ์์ฑํ ํ ์ถํ README.md๋ฅผ ์์ฑ, TIL์ ์งง๊ฒ ์
๋ก๋ (2) ๊ธด ์ค๊ธ ์์ฃผ์ ๊ฒ์๊ธ(์๊ณ ๋ฆฌ์ฆ ๋ถ์๊ณผ ์๊ธฐ๊ณ๋ฐ ๊ด๋ จ ๊ฒ์๊ธ) ์ค ๋จํธ์ ์ด๊ณ ์งง์ ๋ด์ฉ์ ๊น๋ธ๋ก๊ทธ์ ์
๋ก๋ ํ๋ ๋ฐฉ์์ ์ฑํํ๊ณ ์์ต๋๋ค.
โถ ๐๐ฉ๐ซ๐ข๐ง๐
์๋์ ๋ด์ฉ์ ๊ณต๋ถํ ๋ ํ์งํ ๋ฆฌ๋ฅผ ์ ๋ก๋ํ์์ต๋๋ค.
Java Enum
- java enum์ ๋ํด์ ๊ณต๋ถํ์ต๋๋ค. ๊ด๋ จํ์ฌ ์ฐ์ํํ์ ๋ค ๊ธฐ์ ๋ธ๋ก๊ทธ์ Java Enum ํ์ฉ๊ธฐ๋ฅผ ์ฝ๊ณ ๊ณต๋ถํ์์ต๋๋ค.
- enum type ๋ณ์๋ stack ์์ญ์ ์์ฑ๋ฉ๋๋ค. ํด๋น ๊ฐ์์์ ์ฌ์ฉ๋ Grade๋ฅผ ์์๋ก ๋ค์ด๋ณด์๋ฉด,
Grade grade1 = Grade.BASIC;
์ ์ ์ธํ๋ฉดgrade1
์ ์ด๊ฑฐ ์์์ธGrade.BASIC
๊ฐ ๊ฐ๋ฆฌํค๋,Grade๊ฐ ์ ์ฅ๋ stack์ ๋ฒ์ง
๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ์ด์ ๋ฐ๋ผgrade1
๊ณผGrade.BASIC
์ ๊ฐ์ ๋ฒ์ง๋ฅผ ๊ฐ๋ฆฌํค๋, ๋์ผํ ๋ณ์๊ฐ ๋ฉ๋๋ค. ์ด๋ก ์ธํด enum type์==
์ฐ์ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- enum type ๋ณ์๋ stack ์์ญ์ ์์ฑ๋ฉ๋๋ค. ํด๋น ๊ฐ์์์ ์ฌ์ฉ๋ Grade๋ฅผ ์์๋ก ๋ค์ด๋ณด์๋ฉด,
Interface
- ์ด์ ์ ์๊ฐํ ์คํ๋ง ์
๋ฌธ ๊ฐ์ ์์๋ ํ์คํ ์ดํดํ ์ ์์๋ Interface์ ๊ตฌํ์ฒด์ ๊ด๊ณ๋ฅผ ์ดํดํ์ต๋๋ค.
- ์ฉ์ด๋ก ๋ง์ด ์ฌ์ฉ๋๋ โ๋ฐ๋ผ๋ณด๋คโ๋ฅผ ์ดํดํ๊ฒ ๋์์ต๋๋ค.
MemoryMemberRepository
๋MemoryRepository
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค.MemberServiceImpl
์MemberService
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค.- ์ด๋,
MemberServiceImple
์MemberRepository
์ธํฐํ์ด์ค๋ฅผ ๋ฐ๋ผ๋ณด์ง๋ง(=์ฐธ์กฐํ์ง๋ง), null pointer exception์ผ๋ก ์ธํดMemoryMemberRepository
๊ตฌํ์ฒด๋ฅผ ๋ฐ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. - ์ด๋ฌํ ์ ์์ ํ์ฌ ์์ฑ๋ ์ฝ๋๋ SOLID ๊ฐ์ ์งํฅ 5์์น์ DIP(์์กด๊ด๊ณ ์ญ์ ์์น)์ ์๋ฐฐํ๊ณ ์์ต๋๋ค.
- DIP ์์กด๊ด๊ณ ์ญ์ ์์น์ด๋, ๊ตฌ์ฒดํ(๊ตฌํ ํด๋์ค)์ ์์กดํ๋ ๋์ ์ถ์ํ(Interface)์ ์์กดํด์ผ ํ๋ค๋ ์์กด์ฑ ์ฃผ์ ์์น์ ์๋ฏธํฉ๋๋ค.
junit
- main()์์์ ํ ์คํธ ๋์ junit์ ์ฌ์ฉํ๋ ํ ์คํธ๋ฅผ ์ดํดํ๊ณ , ๊ตฌํํ ์ ์๊ฒ ๋์์ต๋๋ค.
#๐ฉ๐ฉ๐ฉ๐ฉ๐ญ๐ญ
#BBBBFF
ํ์ Study Study(?)๊ฐ ์ค๋๋ถํฐ ์์๋์์ต๋๋ค. ์ ๊ฒฝ์ฐ์ ์์นจ๋ถํฐ ์ ๋ ๊น์ง ์๋ฐ์ ๊ณต๋ถ, ํ์์์ ์๊ฐ์ ํ๊ณ ๋๋ฉด, ์ ๋ ์๊ฐ์ ๊ณต๋ถ๋ก ํ ์ ํ๋ ๋ฐ์ ์ฒด๋ ฅ์ ์ธ ํ๊ณ๋ก ์ง์ค๋ ฅ์ด ์ ํ๋๊ณค ํ์์ต๋๋ค. ์ด์ ๋น์ทํ ๊ณ ์ถฉ์ ๊ฒช์ผ์๋ ํ์ ๋ถ๋ค๊ณผ 18:00~24:00 ์ฌ์ด์ ์๊ฐ์ ๋์ค์ฝ๋์ ์ ์ํ์ฌ ์ต์ 2์๊ฐ ๊ณต๋ถ๋ฅผ ํ๊ฒ ๋์์ต๋๋ค! (1) ์ถ์+๊ณต๋ถํ ๋ด์ญ ์์ฑ (2) ์์ฑ์ฑ๋์ ์, ํ๋ฉด๊ณต์ ๋ฑ์ ํ๋ฉฐ ๊ณต๋ถ ์งํ (3) ๊ณต๋ถํ ๋ด์ญ ์ธ์ฆํ๋ฉฐ ํด๊ทผํ๋ ์์คํ ์ผ๋ก ์๋ฒ์ด์์ค์ ๋๋ค.
โถ ๐จ๐๐๐ ๐๐๐
- ์๋์ ํ์ต ๋ด์ฉ์ ํฌํจํ์ฌ ์๊ฐ ๋ด์ฉ์ ์ ๋ฆฌํ ๋ ํ์งํ ๋ฆฌ๋ฅผ ์์ฑํ์ต๋๋ค.
- JSP์ Directive Tag์ ๋ํด ๋ฐฐ์ฐ๊ณ , JSP ์ฝ๋ ๋ด์์ ๋ฐฐ์ด์ ์ ์ธํ๊ณ ์ํํ๋ ๋ฌธ์ ๋ฅผ ํ์์ต๋๋ค. ๋งํฌ
- Directive Tag ์ค Action Tag์ ๋ํด ๋ฐฐ์ฐ๊ณ , Forward action๊ณผ Param action์ ๊ณต๋ถํ์ต๋๋ค.
- include directvie tag๋ฅผ ์ฌ์ฉํด header์ footer๋ฅผ ๋ฃ์ด๋ณด์์ต๋๋ค. ๋งํฌ
- include directive tag์ page directive tag๋ฅผ ์ฌ์ฉํด ์๋จ ๋ค๋น๊ฒ์ด์ ๊ณผ footer๋ include๋ก, ๋ฉ์ธ์์ page import๋ก Dateํจ์๋ฅผ ๊ฐ์ ธ์ SimpleDateFormat์ ์ฌ์ฉํด ํ์ฌ ์๊ฐ์ ์ถ๋ ฅํ์ต๋๋ค. ๋งํฌ
- JavaBeans๋ฅผ ์ฌ์ฉํด ๊ฐ๋จํ ์๋ ์์ผ๊ณผ ์ด๋ฆ์ memberBean์์ ๋ฐ์์ ์ถ๋ ฅํด๋ณด์์ต๋๋ค. jspํ์ผ, beanํ์ผ
โถ ๐๐ญ๐
#BBBBFF
์คํฐ๋์คํฐ๋(?)๋ก ์ธํด Discord Bot์ ์ ์ํ๋ ๋ฐ์ ๊ด์ฌ์ ๊ฐ๊ฒ ๋์์ต๋๋ค. ์๋ฐ๋ก ๊ตฌํํ๋ ๋์ค์ฝ๋ ๋ด์ ๊ฒฝ์ฐ์๋ JDA Rest API๊ฐ ๊นํ๋ธ์ ์คํ์์ค๋ก ๊ณต๊ฐ๋์ด ์์ต๋๋ค. ํด๋น API๋ฅผ ํ์ฉํ์ฌ ์ฐ์ ์ ์ถ์์ฒดํฌ, ํด๊ทผ์ฒดํฌ๋ฅผ ํ๋ ๋์ค์ฝ๋ ๋ด์ ์ ์ํ๊ณ ์ ํฉ๋๋ค. ์๋ฒ ๊ตฌ์ถ๊น์ง ํด์ผํ๋ ์ํฉ์ด๊ธฐ์, ์ฐ์ ์ ํ๋ฃจ์ ์งง์ ์๊ฐ๋ง์ ์๋ชจํ๋ฉฐ ๋ฉ์ธ ์ฌ์ด๋ ํ๋ก์ ํธ๋ก ์งํํ๊ณ ์ ํฉ๋๋ค. ๋ฉ์ธ ๊ธฐ๋ฅ์ด ๊ตฌํ๋ ์ดํ์ ์ฆ๊ฑฐ์๋ฃ๋ฅผ ๋ฐ๋ ๋ฑ์ ์ถ๊ฐ ๊ธฐ๋ฅ๋ ๊ตฌํํด๋ณด๊ณ ์ถ์ต๋๋ค. ํฐ ๊ท๋ชจ๋ก ๋์ด๊ฐ์ง ์์ ์๊ฐ์ด๊ธฐ์ DB๋ก๋ Firebase firestore๋ฅผ, ์๋ฒ๋ก๋ ๊ธฐ์กด์ ์ด์ด๋ณด์๋ ๋ค์ด๋ฒํด๋ผ์ฐ๋ํ๋ซํผ ๋ฌด๋ฃ CentOS ์๋ฒ๋ฅผ ์ด์ฉํ ์๊ฐ์ ๋๋ค.
โจ
โถ ๐ซ๐๐
(1) ๋ช ์ผ๊ฐ ๋ฏธ๋ฃจ๊ธฐ๋ง ํ๋ ๋นจ๋๋ฅผ ๋๋์ด ํ์ต๋๋ค.
(2) ์ฐ๋ ๊ธฐ ๋ฒ๋ฆฌ๋ ๋ ์ด์ด์ ์ง๋ ๋ฒ์ ๋ฐ์คํฌ์ธํ
์ ํ๋ฉฐ ๋์จ ์ฐ๋ ๊ธฐ๋ค์ ๋ด๋ค ๋ฒ๋ ธ์ต๋๋ค. ๊ฐ์ด!
(3) Notion์์ ๋๊ธฐ๋ถ์ฌ ๊ฒ์๊ธ
์ ์์ฑํ๋ ์ค์
๋๋ค. ๋ชฉ์ ์ ๋๊ธฐ๋ถ์ฌ๋ฅผ ๋ฐ๋ ์ ํฉํ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ๊ฐ์ธ์ ์ธ ๋งค๋ด์ผ์ ๋ง๋๋ ๊ฒ์
๋๋ค. ํด๋น ๋ฌธ์๋ฅผ ์์ฑํด๋ณด๋ฉฐ ๋ฒ์์์ผ๋ก ์ง๊ฒฐ๋๋ ์คํธ๋ ์ค ์์ธ๋ค๋ก ์ธํ์ฌ ๋๊ธฐ๋ถ์ฌ๊ฐ ๋ถ๊ฐ๋ฅํ ์ ์ ์ํฉ์ด ๋ง๋ค์ด์ง ์ ์๋ค๋ ์ ์ ๊ณ ๋ คํ์ฌ, ๋๊ธฐ๋ถ์ฌ์ ์คํธ๋ ์ค ํด์ ์ฌ์ด์ ๊ทธ ์ค๊ฐ ์ง์ ์์ฃผ๋ก ์๊ฐํด๋ณด๊ณ ์ ํฉ๋๋ค.
(4) ์ ํฉํ ๋ฐ์คํฌ ์ธํ
์ ์ํด ์ฌ๋ฌ๋ชจ๋ก ์๋๋ฅผ ํด๋ณด๊ณ ์์ต๋๋ค. ์๊ธฐ๊ณ๋ฐ ์ทจ๋ฏธ ์ฐจ์์์ ๋ฐ์คํฌ ์ธํ
์ ๊ฐ๋จํ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ฆฌ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋๋ฅผ ์๊ฐํ๋ ํ์ด์ง๋ฅผ ์๊ฐํด๋ณด๊ณ ์์ต๋๋ค. ๊น๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ ์ดํ ๋ช ๊ฐ์์ ๋ฏธ๋ค๋์๋ About ํ์ด์ง๋ฅผ ์ด๋ฒ ๋ฌ ๋ด๋ก๋ ๊ผญ ์ฑ์์ผ๊ฒ ์ต๋๋ค.
โถ ๐น๐๐๐
๋ํ์ถ ์์ฆ2 ํฌ๋ง์ฐ๊ตฌ์ 1ํธ ๋ณด์์ต๋๋ค.