์ ์ฒด ๊ธ
DFS(๊น์ด์ฐ์ ํ์)๊ธฐ์ด - 1. ์ด์งํธ๋ฆฌ ์ํ(๊น์ด์ฐ์ ํ์)
์ด์ง ํธ๋ฆฌ(Binary Tree)๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ ๋ค์์ 4๊ฐ์ง๊ฐ ์๋ค. ์ ์์ํ(Preorder Traversal) ์ค์์ํ(Inorder Traversal) ํ์์ํ(Postorder Traversal) ๋ ๋ฒจ์ํ(Levelorder Traversal) ๋๋ BFS(Breadth-First Search; ๋๋น ์ฐ์ ํ์) ๋ ๋ฒจ์ํ(;BFS)๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ํ๋ฐฉ์์ DFS(Depth-First Search; ๊น์ด ์ฐ์ ํ์)์ผ๋ก ๋ถ๋ฅํ ์ ์๋ค. ์ ์์ํ(preorder traversal) ์ ์์ํ๋ ๋ฃจํธ ๋ ธ๋๋ฅผ ๋จผ์ ํ์ํ๊ณ , ์์ ๋ ธ๋๋ฅผ ํ์ ๋ถ๋ชจ-์ผ์ชฝ-์ค๋ฅธ์ชฝ ์ค์์ํ(inorder traversal) ์ค์์ํ๋ ์ผ์ชฝ ์์ ๋ ธ๋๋ฅผ ํ์ํ๊ณ , ๋ฃจํธ ๋ ธ๋๋ฅผ ํ์ํ๊ณ , ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ฅผ ..
DFS(๊น์ด์ฐ์ ํ์)๊ธฐ์ด - 1. ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ ์ด์ง์ ์ถ๋ ฅ
๋์ ํ์ด ๊ฐ์ ํ์ด
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] 1๊ณผ๋ชฉ : ์ํํธ์จ์ด ์ค๊ณ
[2022๋ 04์ 24์ผ] ์์ฐจ ๋ค์ด์ด๊ทธ๋จ์ ํ์ ๋ค์ด์ด๊ทธ๋จ์ ์ข ๋ฅ์ด๋ฏ๋ก ๋์ ๋ชจ๋ธ๋ง ๋ค์ด์ด๊ทธ๋จ : ์ฌ๋ฌผ๊ณผ ๊ด๊ณ๋ฅผ ๋ํ์ผ๋ก ํํํ ๊ฒ ๊ตฌ์กฐ์ ๋ค์ด์ด๊ทธ๋จ - ์ ์ ๋ชจ๋ธ๋ง ํ์ ๋ค์ด์ด๊ทธ๋จ - ๋์ ๋ชจ๋ธ๋ง ์์ฐจ ๋ค์ด์ด๊ทธ๋จ(Sequence Diagram) ์์คํ ์ด ์ ๋ฌํ๋ ๋ฉ์์ง์ ์๊ฐ์ ํ๋ฆ์ ๋ํ๋ด๋ ค๊ณ ํ๋ ์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ์ด๋ค. ๊ฐ์ฒด๊ฐ์ ๋์ ์ํธ์์ฉ์ ์๊ฐ์ ๊ฐ๋ ์ ์ค์ฌ์ผ๋ก ๋ชจ๋ธ๋งํ๋ ๊ณผ์ ์ ๋งํ๋ค. ์์ฐจ๋ค์ด์ด๊ทธ๋จ ๊ตฌ์ฑ์์ ์ํฐ : ๋ฉ์์ง ์ฒด์ธ์ ์์ํ ์ ์๋ ์๋ฆฌ๋จผํธ ๊ฐ์ฒด : ๋ฉ์์ง๋ฅผ ์ก์์ ํ๋ ๊ฐ์ฒด ๋ฉ์์ง : ๊ฐ์ฒด๊ฐ ์ฐ๊ฒฐ ๊ธฐ๋ฅ์ ๋ด๋น ํ๊ท ๋ฉ์์ง : ๊ฐ์ ๊ฐ์ฒด์ ๋ํ ํจ์ ํธ์ถ ์ ์ด๋ธ๋ก : ์ ์ด๋ฌธ์ ์ํ ๋ฃจํ MOM(Message Oriented Middleware) ๋น๋๊ธฐํ ๋ฉ์์ง ์ ๋ฌ ์จ๋ผ์ธ..
DFS(๊น์ด์ฐ์ ํ์)๊ธฐ์ด - 0. [์ ์์ง์] ์ฌ๊ทํจ์์ ์คํ
์ฌ๊ทํจ์ ์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์ ์ฌ๊ทํจ์ ์๋ํ ๋ ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉ ๋ฐ๋ณต๋ฌธ์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ค (๋ฐ๋ณต๋ฌธ์ ๋์ฒด, 3์ค4์ค for๋ฌธ ) ์ถ๋ ฅ ํ ์ฌ๊ทํจ์ ํธ์ถ ์ฌ๊ทํจ์ ํธ์ถ ํ ์ถ๋ ฅ 1์ ๋ฐํํ๋ฉฐ ์ด์ ์ return ํ์๋ ๊ฐ๋ค์ ๊ณฑํ ๋ค ๋ค์ ๋ฐํํด๊ฐ๋ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค https://m.blog.naver.com/jsky10503/221248164066 ์ฌ๊ท(Recursion)ํธ์ถ๋ก ์์๋ณด๋ ์๊ณ ๋ฆฌ์ฆ๊ธฐ์ด ํจ์ ๋ด์์ ์๊ธฐ์์ ์ ํจ์๋ฅผ ๋ค์ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ์ฌ๊ทํธ์ถ์ด๋ผ๊ณ ํฉ๋๋ค. Recursion์ด๋ผ๊ณ ๋ ๋ง์ด ์... blog.naver.com
์๋ฃ๊ตฌ์กฐ ํ์ฉ (ํ) - 11. ์ต๋ํ
๋์ ํ์ด ์ต๋ํ heapq์์๋ ์ต๋ ํ์ ์ ๊ณตํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ๋ถํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ ์ต๋ ํ์ ๊ตฌํํ๋ค. ๋ถํธ๋ฅผ ๋ฐ๊ฟ์ ์ต์ ํ์ ๋ฃ์ด์ค ๋ค์ ์ต์๊ฐ๋ถํฐ pop์ ํด์ค ๋ ๋ค์ ๋ถํธ๋ฅผ ๋ฐ๊ฟ์ฃผ๋ฉด ์ต๋ ํ๊ณผ ๋์ผํ๋ค. import heapq heap = [] values = [1,5,3,2,4] # ์๋ for๋ฌธ์ ์คํ์ํค๊ณ ๋๋ฉด heap์ [-5,-4,-3,-1,-2]๊ฐ ๋๋ค. for value in values: heapq.heappush(heap, -value) # ์๋ for๋ฌธ์ ์คํ์ํค๋ฉด 5,4,3,2,1์ด ์ถ๋ ฅ๋๋ค. ์ฆ, ํฐ ์ซ์๋ถํฐ ์ถ๋ ฅ์ด ๋๋ค. for i in range(5): print(-heapq.heappop(heap))
[์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ] - 18. ๋ค์ํ ์์กด๊ด๊ณ ์ฃผ์ ๋ฐฉ๋ฒ
๋ค์ํ ์์กด๊ด๊ณ ์ฃผ์ ๋ฐฉ๋ฒ ์์กด๊ด๊ณ ์ฃผ์ ์ ํฌ๊ฒ 4๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. ์์ฑ์ ์ฃผ์ ์์ ์ ์ฃผ์ (setter ์ฃผ์ ) ํ๋ ์ฃผ์ ์ผ๋ฐ ๋ฉ์๋ ์ฃผ์ ์์ฑ์ ์ฃผ์ @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; ์ด๋ฆ ๊ทธ๋๋ก ์์ฑ์๋ฅผ ํตํด์ ์์กด ๊ด๊ณ๋ฅผ ์ฃผ์ ๋ฐ๋ ๋ฐฉ๋ฒ์ด๋ค. ์์ฑ์ ํธ์ถ์์ ์ ๋ฑ 1๋ฒ๋ง ํธ์ถ๋๋ ๊ฒ์ด ๋ณด์ฅ๋๋ค. ๋ถ๋ณ, ํ์ ์์กด๊ด๊ณ์ ์ฌ์ฉ ์ค์! ์์ฑ์๊ฐ ๋ฑ 1๊ฐ๋ง ์์ผ๋ฉด @Autowired๋ฅผ ์๋ตํด๋ ์๋ ์ฃผ์ ๋๋ค. ๋ฌผ..
[์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ] - 17. ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์์กด๊ด๊ณ ์๋ ์ฃผ์ / ์๋, ์๋์ ์ฌ๋ฐ๋ฅธ ์ค๋ฌด ์ด์ ๊ธฐ์ค
์ปดํฌ๋ํธ ์ค์บ๊ณผ ์์กด๊ด๊ณ ์๋ ์ฃผ์ ์์ํ๊ธฐ @Configuration public class AppConfig { @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } ์ง๊ธ๊น์ง ์คํ๋ง ๋น์ ๋ฑ๋กํ ๋๋ ์๋ฐ ์ฝ๋์ @Bean์ด๋ XML์ ๋ฑ์ ํตํด์ ์ค์ ์ ๋ณด์ ์ง์ ๋ฑ๋กํ ์คํ๋ง ๋น์ ๋์ดํ๋ค. ์ด๋ ๊ฒ ๋ฑ๋กํด์ผ ํ ์คํ๋ง ๋น์ด ์์ญ, ์๋ฐฑ๊ฐ๊ฐ ๋๋ฉด ์ผ์ผ์ด ๋ฑ๋กํ๊ธฐ๋ ๊ท์ฐฎ๋ค ๊ทธ๋์ ์คํ๋ง์ ์ค์ ์ ๋ณด๊ฐ ์์ด๋ ์๋์ผ๋ก ์คํ๋ง ..