์ „์ฒด ๊ธ€

Algorithm/ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

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) ์ค‘์œ„์ˆœํšŒ๋Š” ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  , ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  , ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ..

์ž๊ฒฉ์ฆ/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ] 1๊ณผ๋ชฉ : ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„

[2022๋…„ 04์›” 24์ผ] ์ˆœ์ฐจ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ํ–‰์œ„ ๋‹ค์ด์–ด๊ทธ๋žจ์˜ ์ข…๋ฅ˜์ด๋ฏ€๋กœ ๋™์  ๋ชจ๋ธ๋ง ๋‹ค์ด์–ด๊ทธ๋žจ : ์‚ฌ๋ฌผ๊ณผ ๊ด€๊ณ„๋ฅผ ๋„ํ˜•์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ ๊ตฌ์กฐ์  ๋‹ค์ด์–ด๊ทธ๋žจ - ์ •์  ๋ชจ๋ธ๋ง ํ–‰์œ„ ๋‹ค์ด์–ด๊ทธ๋žจ - ๋™์  ๋ชจ๋ธ๋ง ์ˆœ์ฐจ ๋‹ค์ด์–ด๊ทธ๋žจ(Sequence Diagram) ์‹œ์Šคํ…œ์ด ์ „๋‹ฌํ•˜๋Š” ๋ฉ”์‹œ์ง€์˜ ์‹œ๊ฐ„์  ํ๋ฆ„์„ ๋‚˜ํƒ€๋‚ด๋ ค๊ณ  ํ•˜๋Š” ์ƒํ˜ธ์ž‘์šฉ ๋‹ค์ด์–ด๊ทธ๋žจ์ด๋‹ค. ๊ฐ์ฒด๊ฐ„์˜ ๋™์  ์ƒํ˜ธ์ž‘์šฉ์„ ์‹œ๊ฐ„์  ๊ฐœ๋…์„ ์ค‘์‹ฌ์œผ๋กœ ๋ชจ๋ธ๋งํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค. ์ˆœ์ฐจ๋‹ค์ด์–ด๊ทธ๋žจ ๊ตฌ์„ฑ์š”์†Œ ์—‘ํ„ฐ : ๋ฉ”์‹œ์ง€ ์ฒด์ธ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์ž‡๋Š” ์—˜๋ฆฌ๋จผํŠธ ๊ฐ์ฒด : ๋ฉ”์‹œ์ง€๋ฅผ ์†ก์ˆ˜์‹ ํ•˜๋Š” ๊ฐ์ฒด ๋ฉ”์‹œ์ง€ : ๊ฐ์ฒด๊ฐ„ ์—ฐ๊ฒฐ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹น ํšŒ๊ท€ ๋ฉ”์‹œ์ง€ : ๊ฐ™์€ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ œ์–ด๋ธ”๋ก : ์ œ์–ด๋ฌธ์„ ์œ„ํ•œ ๋ฃจํ”„ MOM(Message Oriented Middleware) ๋น„๋™๊ธฐํ˜• ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ์˜จ๋ผ์ธ..

Algorithm/ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

DFS(๊นŠ์ด์šฐ์„ ํƒ์ƒ‰)๊ธฐ์ดˆ - 0. [์„ ์ˆ˜์ง€์‹] ์žฌ๊ท€ํ•จ์ˆ˜์™€ ์Šคํƒ

์žฌ๊ท€ํ•จ์ˆ˜ ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜ ์žฌ๊ท€ํ•จ์ˆ˜ ์ž‘๋™ํ• ๋•Œ ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉ ๋ฐ˜๋ณต๋ฌธ์˜ ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค (๋ฐ˜๋ณต๋ฌธ์˜ ๋Œ€์ฒด, 3์ค‘4์ค‘ for๋ฌธ ) ์ถœ๋ ฅ ํ›„ ์žฌ๊ท€ํ•จ์ˆ˜ ํ˜ธ์ถœ ์žฌ๊ท€ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ›„ ์ถœ๋ ฅ 1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์ด์ „์— return ํ•˜์˜€๋˜ ๊ฐ’๋“ค์„ ๊ณฑํ•œ ๋’ค ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•ด๊ฐ€๋Š” ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค https://m.blog.naver.com/jsky10503/221248164066 ์žฌ๊ท€(Recursion)ํ˜ธ์ถœ๋กœ ์•Œ์•„๋ณด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ธฐ์ดˆ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ž๊ธฐ์ž์‹ ์˜ ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์žฌ๊ท€ํ˜ธ์ถœ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Recursion์ด๋ผ๊ณ ๋„ ๋งŽ์ด ์•Œ... blog.naver.com

Algorithm/ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

์ž๋ฃŒ๊ตฌ์กฐ ํ™œ์šฉ (ํž™) - 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))

Spring/Spring ๊ธฐ๋ณธ

[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] - 18. ๋‹ค์–‘ํ•œ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… ๋ฐฉ๋ฒ•

๋‹ค์–‘ํ•œ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… ๋ฐฉ๋ฒ• ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์€ ํฌ๊ฒŒ 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์ƒ์„ฑ์ž ์ฃผ์ž… ์ˆ˜์ •์ž ์ฃผ์ž…(setter ์ฃผ์ž…) ํ•„๋“œ ์ฃผ์ž… ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ ์ฃผ์ž… ์ƒ์„ฑ์ž ์ฃผ์ž… @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด์„œ ์˜์กด ๊ด€๊ณ„๋ฅผ ์ฃผ์ž… ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ƒ์„ฑ์ž ํ˜ธ์ถœ์‹œ์ ์— ๋”ฑ 1๋ฒˆ๋งŒ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋œ๋‹ค. ๋ถˆ๋ณ€, ํ•„์ˆ˜ ์˜์กด๊ด€๊ณ„์— ์‚ฌ์šฉ ์ค‘์š”! ์ƒ์„ฑ์ž๊ฐ€ ๋”ฑ 1๊ฐœ๋งŒ ์žˆ์œผ๋ฉด @Autowired๋ฅผ ์ƒ๋žตํ•ด๋„ ์ž๋™ ์ฃผ์ž… ๋œ๋‹ค. ๋ฌผ..

Spring/Spring ๊ธฐ๋ณธ

[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] - 17. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์˜์กด๊ด€๊ณ„ ์ž๋™ ์ฃผ์ž… / ์ž๋™, ์ˆ˜๋™์˜ ์˜ฌ๋ฐ”๋ฅธ ์‹ค๋ฌด ์šด์˜ ๊ธฐ์ค€

์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์˜์กด๊ด€๊ณ„ ์ž๋™ ์ฃผ์ž… ์‹œ์ž‘ํ•˜๊ธฐ @Configuration public class AppConfig { @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } ์ง€๊ธˆ๊นŒ์ง€ ์Šคํ”„๋ง ๋นˆ์„ ๋“ฑ๋กํ•  ๋•Œ๋Š” ์ž๋ฐ” ์ฝ”๋“œ์˜ @Bean์ด๋‚˜ XML์˜ ๋“ฑ์„ ํ†ตํ•ด์„œ ์„ค์ • ์ •๋ณด์— ์ง์ ‘ ๋“ฑ๋กํ•  ์Šคํ”„๋ง ๋นˆ์„ ๋‚˜์—ดํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋“ฑ๋กํ•ด์•ผ ํ•  ์Šคํ”„๋ง ๋นˆ์ด ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ๊ฐœ๊ฐ€ ๋˜๋ฉด ์ผ์ผ์ด ๋“ฑ๋กํ•˜๊ธฐ๋„ ๊ท€์ฐฎ๋‹ค ๊ทธ๋ž˜์„œ ์Šคํ”„๋ง์€ ์„ค์ • ์ •๋ณด๊ฐ€ ์—†์–ด๋„ ์ž๋™์œผ๋กœ ์Šคํ”„๋ง ..

hello_u
๐Ÿ˜œ