์ „์ฒด ๊ธ€

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

[๋ฐฑ์ค€ 1181๋ฒˆ-ํŒŒ์ด์ฌ]๋‹จ์–ด ์ •๋ ฌ

๋ฐฑ์ค€ (BOJ) 11729๋ฒˆ https://www.acmicpc.net/problem/1181 ์‚ฌ์šฉ์–ธ์–ด : PYTHON 1.๋ฌธ์ œ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ N๊ฐœ์˜ ๋‹จ์–ด๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. 1.๊ธธ์ด๊ฐ€ ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ 2.๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜์—ฌ ๋‹จ์–ด๋“ค์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, ๊ฐ™์€ ๋‹จ์–ด๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์ž…๋ ฅ๋œ ๊ฒฝ์šฐ์—๋Š” ํ•œ ๋ฒˆ์”ฉ๋งŒ ์ถœ๋ ฅํ•œ๋‹ค. 2.ํ’€์ด ์ค‘๋ณต ์ œ๊ฑฐ๋Š” setํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๊ฑฐํ•˜๊ณ , ์ •๋ ฌ์€ sortํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌํ•˜์˜€๋‹ค. ์ด๋•Œ ์ƒ์œ„ ์กฐ๊ฑด A๊ณผ ํ•˜์œ„ ์กฐ๊ฑด B๊ฐ€ ์žˆ๋Š”๊ฒฝ์šฐ, B๋กœ ๋จผ์ € ์ •๋ ฌ ํ•œ ํ›„์— A๋กœ ์ •๋ ฌํ•ด์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„  A๊ฐ€ ๊ธธ์ด๊ฐ€ ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ, B๊ฐ€ ๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ๊ธธ์ด๊ฐ€ ์งง์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

[๋ฐฑ์ค€ 11729๋ฒˆ-ํŒŒ์ด์ฌ]ํ•˜๋…ธ์ด ํƒ‘ ์ด๋™ ์ˆœ์„œ

๋ฐฑ์ค€ (BOJ) 11729๋ฒˆ https://www.acmicpc.net/problem/11729 ์‚ฌ์šฉ์–ธ์–ด : PYTHON 1.๋ฌธ์ œ ์„ธ ๊ฐœ์˜ ์žฅ๋Œ€๊ฐ€ ์žˆ๊ณ  ์ฒซ ๋ฒˆ์งธ ์žฅ๋Œ€์—๋Š” ๋ฐ˜๊ฒฝ์ด ์„œ๋กœ ๋‹ค๋ฅธ n๊ฐœ์˜ ์›ํŒ์ด ์Œ“์—ฌ ์žˆ๋‹ค. ๊ฐ ์›ํŒ์€ ๋ฐ˜๊ฒฝ์ด ํฐ ์ˆœ์„œ๋Œ€๋กœ ์Œ“์—ฌ์žˆ๋‹ค. ์ด์ œ ์ˆ˜๋„์Šน๋“ค์ด ๋‹ค์Œ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฒซ ๋ฒˆ์งธ ์žฅ๋Œ€์—์„œ ์„ธ ๋ฒˆ์งธ ์žฅ๋Œ€๋กœ ์˜ฎ๊ธฐ๋ ค ํ•œ๋‹ค. *ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ์›ํŒ๋งŒ์„ ๋‹ค๋ฅธ ํƒ‘์œผ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค. *์Œ“์•„ ๋†“์€ ์›ํŒ์€ ํ•ญ์ƒ ์œ„์˜ ๊ฒƒ์ด ์•„๋ž˜์˜ ๊ฒƒ๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ด๋™ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ. ๋‹จ, ์ด๋™ ํšŸ์ˆ˜๋Š” ์ตœ์†Œ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค. 2.ํ’€์ด ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ’€์–ด์•ผ ํ•œ๋‹ค. ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ์„ค๋ช…ํ–ˆ๋˜ ์•”์‹œ์  ๋งค๊ฐœ๋ณ€์ˆ˜์ธ ๊ฐ ์žฅ๋Œ€๋ฅผ ๋ช…์‹œ์  ๋งค๊ฐœ๋ณ€์ˆ˜ start, via end๋กœ ..

๐Ÿ’Ž๋ฐฑ์—”๋“œ : Backend

[Spring] @Autowired์˜ ์œ„์น˜์™€ Required์˜ต์…˜

@Autowired์˜ ์œ„์น˜ setter ์œ„ setterํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด์„œ injection์ด ์ˆ˜ํ–‰๋จ field ์œ„ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ injection์ด ์ˆ˜ํ–‰๋จ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†๋‹ค๋ฉด error๋ฐœ์ƒ(์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฐœ์ƒ) overload ์ƒ์„ฑ์ž ์œ„ overload ์ƒ์„ฑ์ž์—์„œ ๊ฐ์ฒด๋ฅผ ๋ฐ”์ธ๋”ฉ ์œ„์™€ ๊ฐ™์ดํ•˜๊ฒŒ ๋˜๋ฉด @Qualifier์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค overload์ƒ์„ฑ์ž ๊ฐ™์€ ๊ฒฝ์šฐ์— Exam์„ ๋‘ ๊ฐœ ์ด์ƒ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ! ๐Ÿ‘‡ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ์ž์— @Qualifier์„ ์„ค์ •ํ•ด์„œ ํ•ด๊ฒฐ @Autowired์˜ required ์†์„ฑ exam2๋ผ๋Š” bean์ด ์—†๋Š”๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ด๋‹ค. required=false๋กœ ์„ค์ •์„ ํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น bean์ด ์—†๋Š”..

๐Ÿ’Ž๋ฐฑ์—”๋“œ : Backend

[Spring] <context : annotation-config> vs <context : component-scan>

์™€ ์˜ ์ฐจ์ด์  ์ด๋ฏธ ๋“ฑ๋ก๋œ bean์— ๋Œ€ํ•ด์„œ๋งŒ Annotation์„ ํ™œ์„ฑํ™” ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ xml์— bean์„ ๋ฐ˜๋“œ์‹œ ์„ ์–ธํ•ด์•ผ ํ•œ๋‹ค. @Autowired์™€ @Qualifier ๋‘ ๊ฐ€์ง€๋งŒ ํ•ด๊ฒฐํ•œ๋‹ค. bean์˜ ๋“ฑ๋ก์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†๋‹ค. ์Šคํ”„๋ง์ด ์•Œ์•„์„œ bean์Šค์บ”์„ ํ†ตํ•ด Annotation์„ ํ•ด์„ํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•œ๋‹ค. @Autowired์™€ @Qualifier๋ฟ๋งŒ ์•„๋‹ˆ๋ผ @Service, @Component, @Controller, @Repository ๋“ฑ ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ์Šค์บ”ํ•˜๊ณ  bean์„ ์ž‘์„ฑํ•œ๋‹ค. ๋‹ค๋งŒ base-package๋ฅผ ํ†ตํ•ด ์Šคํ”„๋ง์ด ์Šค์บ”ํ•  ํŒจํ‚ค์ง€ ์œ„์น˜๋ฅผ ์ง€์ •ํ•ด๋‘ฌ์•ผ ํ•œ๋‹ค.

๐Ÿ’Ž๋ฐฑ์—”๋“œ : Backend

[Spring]@Autowired๋™์ž‘๋ฐฉ์‹๊ณผ @Qualifier

Spring @Autowired๋Š” ์ž๋ฃŒํ˜•์„ ๊ธฐ์ค€์œผ๋กœ ์ฐพ๋Š”๋‹ค Exam๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์˜ id="exam"์„ ์ง€์› ๋‹ค. ์‹คํ–‰ํ•˜๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ๐Ÿ“Œ @Autowired๋Š” ์ž๋ฃŒํ˜•์„ ๊ธฐ์ค€์œผ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค(๊ธฐ๋ณธ๋™์ž‘) ๋ณ€์ˆ˜๋ช…์„ ๊ธฐ์ค€์œผ๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ๋„ ํ•จ (๋ฐ‘์— ๋‚˜์˜ด) @Qualifier public class InlineExamConsole implements ExamConsole { private Exam exam; ... @Autowired @Qualifier("exam1") @Override public void setExam(Exam exam) { this.exam = exam; } } @Qualifier๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ exam1์„ Autowiredํ•˜๋„๋ก ์„ค์ •ํ•œ๋‹ค. exam๊ฐ์ฒด exam1๊ณผ exam2๊ฐ€ ๋‘ ๊ฐœ ์žˆ๋‹ค..

๐Ÿ’Ž๋ฐฑ์—”๋“œ : Backend

[Spring]์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•  ๋•Œ ์žฅ์ ๊ณผ @Autowired๋ฅผ ์ด์šฉํ•œ DI

Spring โญXml->Annotation (์ถœ์ฒ˜:https://www.youtube.com/watch?v=S065KRjXRSY&list=PLq8wAnVUcTFUHYMzoV2RoFoY2HDTKru3T&index=12&t=90s) XML์„ ์ด์šฉํ•œ๋‹ค๋ฉด B2๋ฅผ B3๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ์„๋•Œ ์„ค์ •ํŒŒ์ผ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค. ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์„ค์ •ํŒŒ์ผ๋งŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์˜ˆ์ „์—๋Š” ์ข‹์•˜์ง€๋งŒ, ์„ค์ •ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋Š”๊ฒƒ์— ๋ถˆํŽธํ•จ์„ ๋Š๋ผ๊ฒŒ ๋˜์—ˆ๋‹ค. ์†Œ์Šค์ฝ”๋“œ์— ์„ค์ •์„ ์‹ฌ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์„ ํ™œ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. โญ@Autowired์„ ์ด์šฉํ•œ DI (์ถœ์ฒ˜:https://www.youtube.com/watch?v=S065KRjXRSY&list=PLq8wAnVUcTFUHYMzoV2RoFoY2HDTKru3T&index=12&t=90s) ..

๐Ÿ’Ž๋ฐฑ์—”๋“œ : Backend

[Spring]์ฝœ๋ ‰์…˜ ์ƒ์„ฑ๊ณผ DI

Spring toString (์ž๋ฐ”์™€ ๊ฐ™์€) ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋“ค์€ ๊ฐ์ฒด์— toString์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ toString์€ ๊ทธ ๊ฐ์ฒด๋ฅผ ์„ค๋ช…ํ•ด์ฃผ๋Š” ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ์ฒด์˜ toString์„ ๋ฎ์–ด์“ฐ๊ธฐ(overriding)ํ•˜๋ฉด ๋‹ค๋ฅธ ํ˜•์‹์˜ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌธ์ž์—ด์ด ๊ธฐ๋Œ€๋˜๋Š” ๊ณณ์—์„œ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ์Šคํ…œ์€ ์•”์‹œ์ ์œผ๋กœ toString์„ ํ˜ธ์ถœํ•œ๋‹ค. โญ์ˆœ์ˆ˜ java ์ฝœ๋ ‰์…˜ ์ƒ์„ฑ public class Program { public static void main(String[] args) { List exams = new ArrayList(); exams.add(new NewlecExam(1,1,1,1)); for(Exam e : exams) System.o..

๐Ÿ’Ž๋ฐฑ์—”๋“œ : Backend

[Spring]DI ์ง€์‹œ์„œ

Spring โญSpring์‚ฌ์šฉํ•˜์ง€ ์•Š์€ DI package spring.di; public class Program { public static void main(String[] args) { Exam exam = new NewlecExam(1,2,3,4); ExamConsole console = new GridExamConsole(); console.setExam(exam); // DI console.print(); } } >>> โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ total โ”‚ avg โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 10 โ”‚ 2.50 โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜spring์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  exam์ด๋ผ๋Š” dependecy๋ฅผ ๋งŒ๋“ค์–ด์„œ console์— injectionํ•œ..

mc.thd
mincheolsong