๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

Spring

Spring ๊ธฐ๋ณธ [ํ• ์ธ์ •์ฑ… ๋ณ€๊ฒฝ/๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ/DI/์Šคํ”„๋ง์ปจํ…Œ์ด๋„ˆ]

์ง€๊ธˆ๊นŒ์ง€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ ์„ค๋ช… ํšŒ์›๊ฐ€์ž…์„ ํ•˜๊ณ , ์กฐํšŒํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. ๋ฌผ๊ฑด์„ ๊ตฌ์ž…ํ•  ๋•Œ ํ• ์ธ ์ •์ฑ…์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์„œ ๊ณ ์ •๋œ ํ• ์ธ๊ธˆ์•ก์„ ํ• ์ธํ•ด์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ธฐ์—…์—์„œ ๊ณ ์ •๋œ ํ• ์ธ๊ธˆ์•ก์ด ์•„๋‹ˆ๋ผ ํผ์„ผํŠธ๋กœ ํ• ์ธํ•ด์ฃผ๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋ฐ”๊ฟ”์•ผํ•œ๋‹ค. package hello.core.discount; import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy { private int discountPercent = 10; @Override public int discount(Member member, int price) { if (membe..

JAVA & OOP

SOLID ์›์น™ [๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„/ 5๊ฐ€์ง€ ์›์น™ /๊ฐœ๋…]

SOLID ์›์น™์€ 5๊ฐ€์ง€ ์›์น™์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค. SRP : ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (Single Responsibility Principle) OCP : ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ (Open/Closed Principle) LSP : ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ (Liskov Substitution Principle) ISP : ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ (Interface Segregation Principle) DIP : ์˜์กด๊ด€๊ณ„ ์—ญ์ „ ์›์น™ (Dependency Inversion Principle) ๐Ÿงก SRP (๋‹จ์ผ ์ฑ…์ž„ ์›์น™) - ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. * ์ค‘์š”ํ•œ ๊ธฐ์ค€ : ๋ณ€๊ฒฝ (๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ ํŒŒ๊ธ‰ ํšจ๊ณผ๊ฐ€ ์ ์œผ๋ฉด ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์ž˜ ๋”ฐ๋ฅธ ๊ฒƒ์ด๋‹ค.) ๐Ÿ’› OCP (๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™) - ์†Œํ”„ํŠธ์›จ์–ด ์š”์†Œ๋Š” ํ™•์žฅ์—๋Š” ..

Algorithm/BOJ

๋ฐฑ์ค€(BOJ) 1158๋ฒˆ ์š”์„ธํ‘ธ์Šค [์•Œ๊ณ ๋ฆฌ์ฆ˜/ํŒŒ์ด์ฌ(python)/์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ]

https://www.acmicpc.net/problem/1158 1158๋ฒˆ: ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ ์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net [๋ฌธ์ œ] ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ N๋ช…์˜ ์‚ฌ๋žŒ์ด ์›์„ ์ด๋ฃจ๋ฉด์„œ ์•‰์•„์žˆ๊ณ , ์–‘์˜ ์ •์ˆ˜ K(≤ N)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด์ œ ์ˆœ์„œ๋Œ€๋กœ K๋ฒˆ์งธ ์‚ฌ๋žŒ์„ ์ œ๊ฑฐํ•œ๋‹ค. ํ•œ ์‚ฌ๋žŒ์ด ์ œ๊ฑฐ๋˜๋ฉด ๋‚จ์€ ์‚ฌ๋žŒ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์›์„ ๋”ฐ๋ผ ์ด ๊ณผ์ •์„ ๊ณ„์†ํ•ด ๋‚˜๊ฐ„๋‹ค. ์ด ๊ณผ์ •์€ N๋ช…์˜ ์‚ฌ๋žŒ์ด ๋ชจ๋‘ ์ œ๊ฑฐ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋œ๋‹ค. ์›์—์„œ ์‚ฌ๋žŒ๋“ค์ด ์ œ๊ฑฐ๋˜๋Š” ์ˆœ์„œ๋ฅผ (N, K)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์ด๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด (7, 3)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์€ ์ด๋‹ค. N๊ณผ K๊ฐ€ ์ฃผ์–ด์ง€๋ฉด (N, K)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ..

Algorithm/PROGRAMMERS

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค "๊ธฐ๋Šฅ๊ฐœ๋ฐœ" [์•Œ๊ณ ๋ฆฌ์ฆ˜/์Šคํƒ/ ํ/ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต/ ํŒŒ์ด์ฌ(python)]

https://programmers.co.kr/learn/courses/30/parts/12081 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr [๋ฌธ์ œ] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํŒ€์—์„œ๋Š” ๊ธฐ๋Šฅ ๊ฐœ์„  ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ธฐ๋Šฅ์€ ์ง„๋„๊ฐ€ 100%์ผ ๋•Œ ์„œ๋น„์Šค์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜, ๊ฐ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์†๋„๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ๋ณด๋‹ค ๋จผ์ € ๊ฐœ๋ฐœ๋  ์ˆ˜ ์žˆ๊ณ , ์ด๋•Œ ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์€ ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋  ๋•Œ ํ•จ๊ป˜ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๋ฐฐํฌ๋˜์–ด์•ผ ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ž‘์—…์˜ ์ง„๋„๊ฐ€ ์ ํžŒ ์ •์ˆ˜ ๋ฐฐ์—ด progresses์™€ ๊ฐ ์ž‘์—…์˜ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ์ ํžŒ ..

Algorithm/BOJ

๋ฐฑ์ค€(BOJ) 9012๋ฒˆ ์Šคํƒ๋ฌธ์ œ [ํŒŒ์ด์ฌ(python)]

https://www.acmicpc.net/problem/9012 [๋ฌธ์ œ] ๊ด„ํ˜ธ ๋ฌธ์ž์—ด(Parenthesis String, PS)์€ ๋‘ ๊ฐœ์˜ ๊ด„ํ˜ธ ๊ธฐํ˜ธ์ธ ‘(’ ์™€ ‘)’ ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์ด๋‹ค. ๊ทธ ์ค‘์—์„œ ๊ด„ํ˜ธ์˜ ๋ชจ์–‘์ด ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด(Valid PS, VPS)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํ•œ ์Œ์˜ ๊ด„ํ˜ธ ๊ธฐํ˜ธ๋กœ ๋œ “( )” ๋ฌธ์ž์—ด์€ ๊ธฐ๋ณธ VPS ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋งŒ์ผ x ๊ฐ€ VPS ๋ผ๋ฉด ์ด๊ฒƒ์„ ํ•˜๋‚˜์˜ ๊ด„ํ˜ธ์— ๋„ฃ์€ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด “(x)”๋„ VPS ๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ VPS x ์™€ y๋ฅผ ์ ‘ํ•ฉ(concatenation)์‹œํ‚จ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด xy๋„ VPS ๊ฐ€ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด “(())()”์™€ “((()))” ๋Š” VPS ์ด์ง€๋งŒ “(()(”, “(())()))” , ๊ทธ๋ฆฌ๊ณ  “(()” ๋Š” ..

Algorithm/BOJ

๋ฐฑ์ค€(BOJ) 10828๋ฒˆ ์Šคํƒ๋ฌธ์ œ [ํŒŒ์ด์ฌ(python) / ์‹œ๊ฐ„์ดˆ๊ณผ ์—๋Ÿฌ]

https://www.acmicpc.net/problem/10828 10828๋ฒˆ: ์Šคํƒ ์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์˜ ์ˆ˜ N (1 ≤ N ≤ 10,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ช…๋ น์ด ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ์ •์ˆ˜๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋ฌธ์ œ์— ๋‚˜์™€์žˆ์ง€ www.acmicpc.net ๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 10828๋ฒˆ ์Šคํƒ๋ฌธ์ œ [๋ฌธ์ œ] ์ •์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ์Šคํƒ์„ ๊ตฌํ˜„ํ•œ ๋‹ค์Œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋ช…๋ น์€ ์ด ๋‹ค์„ฏ ๊ฐ€์ง€์ด๋‹ค. push X: ์ •์ˆ˜ X๋ฅผ ์Šคํƒ์— ๋„ฃ๋Š” ์—ฐ์‚ฐ์ด๋‹ค. pop: ์Šคํƒ์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ๋นผ๊ณ , ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค. size: ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜์˜ ๊ฐœ์ˆ˜..

Spring

H2 DB ๋‹ค์šด๋กœ๋“œ [์„ค์น˜ / ์„œ๋ฒ„ ์‹คํ–‰]

์˜ค๋Š˜์€ h2 database ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰๊นŒ์ง€ ํ•ด๋ด…์‹œ๋‹นโœชโ€ฟโœช ์ „์— ํ–ˆ๋˜ ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€๋Š”๊ฑธ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ์„ ํ•ด์•ผํ•œ๋‹ค! 1. https://www.h2database.com์— ์ ‘์†ํ•ด์ฃผ์„ธ์š”! ์ €๋Š” All Platforms์„ ๋‹ค์šด ๋ฐ›์•˜๊ณ  ์••์ถ•๊นŒ์ง€ ํ’€์–ด์ฃผ์„ธ์š”! 2. ์„œ๋ฒ„ ์ ‘์† ์„ค์น˜๋œ ํŒŒ์ผ์„ ์—ด๊ณ  ์œ„์— ์žˆ๋Š” ๋„ค๋ชจ๋ฅผ ํด๋ฆญํ•ดํ•˜๋ฉด ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹น ์ด๊ฑธ ๋ณต์‚ฌํ•ด๋†“๊ณ  cmd๋ฅผ ์—ด์–ด์„œ cd ~~~~~ ์ด๋ ‡๊ฒŒ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•ด์ค๋‹ˆ๋‹ค. window๋Š” h2.bat์„ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ์—ฐ๊ฒฐ์ด ๋ผ์š”!! macOS๋Š” ./h2.sh๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”. (mac์€ ๊ทธ ์ „์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ๋˜๋Š”๋ฐ chmod 755 h2.sh๋ฅผ ํ•ด์ค˜์•ผ ๊ถŒํ•œ ๋ถ€์—ฌ๊ฐ€..

Spring

Spring [ ํšŒ์› ๋“ฑ๋ก/์กฐํšŒ/ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ/์Šคํ”„๋ง]

๊ทธ๋™์•ˆ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ํ† ๋Œ€๋กœ ํšŒ์›์„ ๋“ฑ๋กํ•˜๊ณ , ์กฐํšŒํ•˜๋Š” ์‹ค์Šต์„ ์˜ค๋Š˜ ํ–ˆ๋‹ค!!! ์‚ฌ์‹ค ์ž‘๋…„์— ์ „๊ณต์ˆ˜์—… ๋“ค์œผ๋ฉด์„œ ๋‹ค ํ–ˆ๋˜ ๊ณผ์ •์ธ๋ฐ ๊ทธ๋• ๋„ˆ๋ฌด ๋นจ๋ž์–ด์„œ ์•„์˜ˆ ๋”ฐ๋ผ๊ฐ€์ง€ ๋ชปํ–ˆ์—ˆ๋˜,,,, ๊ทธ๋Ÿผ ์ •๋ฆฌ ํฌ์ŠคํŒ… ์‹œ์ž‘ูฉฬ‹(หŠ•อˆ ๊‡ด •อˆห‹)ูˆ 1. HomeContoller ์ƒ์„ฑ package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") // ๋กœ์ปฌํ˜ธ์ŠคํŠธ์— ๋“ค์–ด์˜ค๋ฉด public String home(){ return "h..

Spring

Spring [์Šคํ”„๋ง ๋นˆ๊ณผ ์˜์กด๊ด€๊ณ„ / ํšŒ์› ์„œ๋น„์Šค ์Šคํ”„๋ง๋นˆ ๋“ฑ๋ก]

์˜ค๋Š˜์€ ์˜์กด๊ด€๊ณ„์— ๋Œ€ํ•ด์„œ ๋ฐฐ์› ๋‹ค! ์–ผ๋ฅธ ๋‹ค์Œ์ฃผ ์•ˆ์— ์ง€๊ธˆ ๋“ฃ๊ณ  ์žˆ๋Š” ์ž…๋ฌธ ๊ฐ•์˜๋ฅผ ๋๋‚ด์•ผ๊ฒ ๋‹ค,,,๏ฝก๏พŸ(๏พŸ´ω`๏พŸ)๏พŸ๏ฝก ์Šคํ”„๋ง ๋นˆ์„ ๋“ฑ๋กํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ • ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ๋“ฑ๋กํ•˜๊ธฐ ์Šคํ”„๋ง๋นˆ์€ ์‰ฝ๊ฒŒ๋งํ•ด์„œ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์ด์•ผ๊ธฐ ํ•œ๋‹ค. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์„ ์ด์šฉํ•ด์„œ ์ž๋™์ ์œผ๋กœ ์˜์กด๊ด€๊ณ„ ์„ค์ • 1. ๋ฉค๋ฒ„ ์ปจํŠธ๋กค๋Ÿฌ ์ƒ์„ฑ package hello.hellospring.controller; import hello.hellospring.domain.Member; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springfram..

FRENCH

์˜ˆ์œ ํ”„๋ž‘์Šค ๋‹จ์–ด/์˜ˆ์œ ๋ถˆ์–ด [์ธ์Šคํƒ€ ์•„์ด๋”” ์ถ”์ฒœ ๋‹จ์–ดโœฟห˜โ—กห˜โœฟ/12๋‹ฌ ํ”„๋ž‘์Šค์–ด]

์˜ค๋Š˜์€ ์˜ˆ์œ ํ”„๋ž‘์Šค ๋‹จ์–ด ๋ช‡๊ฐœ๋ฅผ ์ถ”์ฒœํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹น(เน‘>แด—

DAHLIA CHOI
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (10 Page)