์ „์ฒด ๊ธ€ 77

[๋””์ž์ธ ํŒจํ„ด] ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ(Factory Method) ํŒจํ„ด

ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด์€ ์ƒ์„ฑ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ ๊ฐ์ฒด ์ƒ์„ฑ์„ ๊ณต์žฅ ํด๋ž˜์Šค์—๊ฒŒ ์œ„์ž„ํ•˜๋Š” ํŒจํ„ด์„ ๋งํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ตฌ์ฒด ํด๋ž˜์Šค๋ฅผ ์ง์ ‘ ์–ธ๊ธ‰ํ•˜์—ฌ `new` ์—ฐ์‚ฐ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹ , ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ๊ฐ์ฒด์˜ ์ƒ์„ฑ ์ฑ…์ž„์„ ๋งก์€ ๊ณต์žฅ ํด๋ž˜์Šค์—๊ฒŒ ๊ฐ์ฒด ์ƒ์„ฑ์„ ๋งก๊ธด๋‹ค. ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ณต์žฅ(Factory)๋ฅผ ๋งŒ๋“œ๋Š” ํŒจํ„ด์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ณต์žฅ ํด๋ž˜์Šค์—์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, (์—ฌ๊ธฐ์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ž€ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋œปํ•œ๋‹ค. `ShapeFactory`์—์„œ๋Š” `createShape()` ๋ฉ”์„œ๋“œ๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.) ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค, ์ฆ‰ ๊ณต์žฅ ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›๋Š” ๊ณต์žฅ ์„œ๋ธŒ ํด๋ž˜์Šค๊ฐ€ ๋งŒ๋“ค ๊ฐ์ฒด์˜ ์œ ํ˜•์„ ๊ฒฐ์ •ํ•œ๋‹ค. ๊ณต์žฅ ์ธํ„ฐํŽ˜์ด์Šค: ๊ฐ์ฒด ์ƒ์„ฑ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ์ธํ„ฐ..

[Lv.1] ํฐ์ผ“๋ชฌ

์–ธ์–ด: java ๋ฌธ์ œ ์„ค๋ช… ๋‹น์‹ ์€ ํฐ์ผ“๋ชฌ์„ ์žก๊ธฐ ์œ„ํ•œ ์˜ค๋žœ ์—ฌํ–‰ ๋์—, ํ™ ๋ฐ•์‚ฌ๋‹˜์˜ ์—ฐ๊ตฌ์‹ค์— ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™ ๋ฐ•์‚ฌ๋‹˜์€ ๋‹น์‹ ์—๊ฒŒ ์ž์‹ ์˜ ์—ฐ๊ตฌ์‹ค์— ์žˆ๋Š” ์ด N๋งˆ๋ฆฌ์˜ ํฐ์ผ“๋ชฌ ์ค‘์—์„œ N/2๋งˆ๋ฆฌ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋„ ์ข‹๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™ ๋ฐ•์‚ฌ๋‹˜ ์—ฐ๊ตฌ์‹ค์˜ ํฐ์ผ“๋ชฌ์€ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์—ฌ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ํฐ์ผ“๋ชฌ์€ ๊ฐ™์€ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฐ๊ตฌ์‹ค์— ์ด 4๋งˆ๋ฆฌ์˜ ํฐ์ผ“๋ชฌ์ด ์žˆ๊ณ , ๊ฐ ํฐ์ผ“๋ชฌ์˜ ์ข…๋ฅ˜ ๋ฒˆํ˜ธ๊ฐ€ [3๋ฒˆ, 1๋ฒˆ, 2๋ฒˆ, 3๋ฒˆ]์ด๋ผ๋ฉด ์ด๋Š” 3๋ฒˆ ํฐ์ผ“๋ชฌ ๋‘ ๋งˆ๋ฆฌ, 1๋ฒˆ ํฐ์ผ“๋ชฌ ํ•œ ๋งˆ๋ฆฌ, 2๋ฒˆ ํฐ์ผ“๋ชฌ ํ•œ ๋งˆ๋ฆฌ๊ฐ€ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋•Œ, 4๋งˆ๋ฆฌ์˜ ํฐ์ผ“๋ชฌ ์ค‘ 2๋งˆ๋ฆฌ๋ฅผ ๊ณ ๋ฅด๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 6๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ(3๋ฒˆ), ๋‘ ๋ฒˆ์งธ(1๋ฒˆ) ํฐ์ผ“๋ชฌ์„ ์„ ํƒ ์ฒซ ๋ฒˆ์งธ(3๋ฒˆ), ์„ธ ๋ฒˆ์งธ(2๋ฒˆ) ํฐ..

[Lv.1] ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

์–ธ์–ด: java ๋ฌธ์ œ ์„ค๋ช… ์ˆ˜๋งŽ์€ ๋งˆ๋ผํ†ค ์„ ์ˆ˜๋“ค์ด ๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‹จ ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋“  ์„ ์ˆ˜๊ฐ€ ๋งˆ๋ผํ†ค์„ ์™„์ฃผํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด `participant`์™€ ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด `completion`์ด ์ฃผ์–ด์งˆ ๋•Œ, ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”. ์ œํ•œ์‚ฌํ•ญ ๋งˆ๋ผํ†ค ๊ฒฝ๊ธฐ์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜์˜ ์ˆ˜๋Š” 1๋ช… ์ด์ƒ 100,000๋ช… ์ดํ•˜์ž…๋‹ˆ๋‹ค. `completion`์˜ ๊ธธ์ด๋Š” `participant`์˜ ๊ธธ์ด๋ณด๋‹ค 1 ์ž‘์Šต๋‹ˆ๋‹ค. ์ฐธ๊ฐ€์ž์˜ ์ด๋ฆ„์€ 1๊ฐœ ์ด์ƒ 20๊ฐœ ์ดํ•˜์˜ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ฐ€์ž ์ค‘์—๋Š” ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ํ’€์ด(1/3) - ArrayList `ArrayLi..

[Spring] ์Šคํ”„๋ง์˜ ์ •์„ (3) - Spring MVC

http์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต ํ”„๋กœํ† ์ฝœ(Protocol)์„œ๋กœ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•œ ์•ฝ์† ๋˜๋Š” ๊ทœ์น™. ์ฃผ๊ณ  ๋ฐ›์„ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ˜•์‹์„ ์ •์˜ํ•œ ๊ฒƒ. ๋ณ„๋‹ค๋ฅธ ์„ค๋ช… ์—†์ด๋„ ๊ทœ์น™์„ ์ •ํ•ด๋†“๊ณ  ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์–ด๋–ค ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋„๋ก ํ•จ.  HTTP(Hyper Text Transfer Protocal)ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœํ† ์ฝœ. ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค.(๋ฌด์ƒํƒœ. stateless) ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๋‹ค.(๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๋„ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†์Œ. ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.) ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (์ปค์Šคํ…€ ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•ฝ์†๋งŒ ๋œ๋‹ค๋ฉด ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.) ์š”์ฒญ์š”์ฒญ ๋ฌธ์„œ๋Š” ํ—ค๋”์™€ ๋ฐ”๋””๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. ํ—ค๋”์—๋Š” ๋ณธ๋ฌธ์— ..

Java/Spring 2024.01.01

[Spring] ์Šคํ”„๋ง์˜ ์ •์„ (2) - ์š”์ฒญ๊ณผ ์‘๋‹ต

main ๋ฉ”์„œ๋“œ๋Š” static ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด๋„ main ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋กœ์ปฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์€ main ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋งŒ์œผ๋กœ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„๊นŒ?์›๊ฒฉ ํ”„๋กœ๊ทธ๋žจ์€ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ WAS๊ฐ€ ์žˆ์–ด์•ผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. url์— ์ปดํ“จํ„ฐ ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ๋„ฃ์œผ๋ฉด WAS๊ฐ€ ํฌํŠธ๋ฅผ ๋ฐ›์•„ ์„œ๋ฒ„์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ด์ค€๋‹ค. => AWS์˜ ์ธ์Šคํ„ด์Šค์— Tomcat์„ ์‹คํ–‰์‹œ์ผœ๋†“๊ณ , ๋‚ด ์ปดํ“จํ„ฐ์—์˜ ๋ธŒ๋ผ์šฐ์ € url์— ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์˜ ip๊ณผ tomcat ํฌํŠธ ๋ฒˆํ˜ธ์ธ :8080์„ ๋’ค์— ๋ถ™์—ฌ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์—ด ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ!  `@Controller` ํด๋ž˜์Šค๋ฅผ ์›๊ฒฉ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋“ฑ๋ก`@RequestMapping`  url๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์—ฐ๊ฒฐ..

Java/Spring 2023.12.31

[Spring] ์Šคํ”„๋ง์˜ ์ •์„ (1) ์ดˆ๊ธฐ ์„ค์ •

`rm` ์ง€์šฐ๊ธฐ `ref` rm ์‚ฌ์šฉ์‹œ ํŒŒ์ผ ์ด๋ฆ„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ`sudo` ๊ด€๋ฆฌ์ž ๊ถŒํ•œ`ls` ํ˜„์žฌ ๊ฒฝ๋กœ์— ์žˆ๋Š” ํŒŒ์ผ ์ถœ๋ ฅ`pwd` ํ˜„์žฌ ๊ฒฝ๋กœ ์ถœ๋ ฅ ํ†ฐ์บฃ ์‚ฌ์šฉ ์‹œ ์ž๋ฐ”๊ฐ€ ์–ด๋А ๊ฒฝ๋กœ์— ์žˆ๋Š”์ง€ ์•Œ์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— JAVA_HOME์œผ๋กœ jdk๊ฐ€ ๋‹ค์šด๋กœ๋“œ ๋˜์–ด์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.ํ†ฐ์บฃ ์‹คํ–‰ zsh๊ฐ€ ๊น”๋ ค์žˆ์œผ๋ฏ€๋กœ ํ†ฐ์บฃ ์„ค์น˜๋œ ๊ฒฝ๋กœ๋กœ ๊ฐ€์„œ ๋‹ค์Œ ๋ช…๋ น์–ด ์‹คํ–‰./startup.sh  ์ข…๋ฃŒ ๋ช…๋ น์–ด์•„๋‹ˆ๋ฉด ํ„ฐ๋ฏธ๋„ ์ฐฝ ๋‹ซ์•„๋„ ๋จ./shutdown.sh   STS ์‹คํ–‰ ์‹œ์— ์‹คํ–‰ ๋Œ€๊ธฐ ์ด๋ฏธ์ง€๊ฐ€ ๋’ค์ง‘ํ˜€์„œ ๋‚˜์˜ค๋Š”๋ฐ ์ด๊ฑฐ ๊ดœ์ฐฎ์€๊ฑด๊ฐ€? ใ…‹ใ…‹ใ…‹ใ…‹   ํŒŒ์ผ -  ์Šคํ”„๋ง ๋ ˆ๊ฑฐ์‹œํ•˜๊ณ  ํƒฌํ”Œ๋ฆฟ ์„ ํƒํ•ด์•ผ ํ•˜๋Š”๋ฐ ์—†์œผ๋ฉด configure template ๋“ค์–ด๊ฐ€์„œ ๋””ํดํŠธ ๋นผ๊ณ  ๋‹ค ์ง€์šฐ๋ฉด ๋จ  ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์ •ํ•˜๋Š” ๊ฑฐ๋‹ค.com.fastca..

Java/Spring 2023.12.30

[Spring] ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธํŽธ (3)

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์‹ฑ๊ธ€ํ†ค ์Šคํ”„๋ง์€ ๊ธฐ์—…์šฉ ์˜จ๋ผ์ธ ์„œ๋น„์Šค ๊ธฐ์ˆ ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ํƒ„์ƒํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ณดํ†ต ์—ฌ๋Ÿฌ ๊ณ ๊ฐ์ด ๋™์‹œ์— ์š”์ฒญ์„ ํ•œ๋‹ค. Configurationpublic class AppConfig { @Bean public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public OrderServ..

Java/Spring 2023.12.28

[Spring] ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธํŽธ (2)

๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์Šคํ”„๋ง์œผ๋กœ ์ „ํ™˜ํ•œ๋‹ค. @Configurationpublic class AppConfig { @Bean public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy())..

Java/Spring 2023.12.27

[Spring] ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธํŽธ (1)

https://start.spring.io/ ์—์„œ ์‹œ์ž‘ ํŒŒ์ผ ์ƒ์„ฑ(dependency X)์ž๋ฐ” 21๋กœ ํ•˜๋ฉด ์˜ค๋ฅ˜๋‚˜๋‹ˆ๊นŒ 17๋กœ~!!  setting - gradle - gradle prijects - build and run ์ธํ…”๋ฆฌ์ œ์ด๋กœ ๋ฐ”๊พธ๊ธฐ(gradleํ†ตํ•ด์„œ ์‹คํ–‰ํ•˜๋ฉด ๋А๋ฆผ) ๋‹จ์ถ•ํ‚ค ํ™•์ธsetting - keymap ์‹ค๋ฌด์—์„œ๋Š” ๊ทธ๋ƒฅ ํ•ด์‹œ๋งต๋Œ€์‹  `concurrentHashMap`์„ ์‚ฌ์šฉํ•œ๋‹ค (๋™์‹œ์„ฑ ์ด์Šˆ) ์ธํ…”๋ฆฌ์ œ์ด ๋‹จ์ถ•ํ‚ค command shft enter (๋ฌธ์žฅ ์ž๋™์™„์„ฑ ๋‹จ์ถ•ํ‚ค)command + option + V (์ฐธ์กฐ๋ณ€์ˆ˜ ์ž๋™์ƒ์„ฑ)option + Enter (์ž„ํฌํŠธ ๋“ฑ ์˜ค๋ฅ˜๋‚œ ๊ณณ์œผ๋กœ ์ด๋™)command + shifh + T (ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ)command + E + Enter (์ด์ „ ์ฐฝ์œผ๋กœ ๋Œ์•„..

Java/Spring 2023.12.27

[Lv.2] ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

๋ฌธ์ œ ์„ค๋ช…๊ด„ํ˜ธ๊ฐ€ ๋ฐ”๋ฅด๊ฒŒ ์ง์ง€์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์€ '(' ๋ฌธ์ž๋กœ ์—ด๋ ธ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ ์ง์ง€์–ด์„œ ')' ๋ฌธ์ž๋กœ ๋‹ซํ˜€์•ผ ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด,"()()" ๋˜๋Š” "(())()" ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ž…๋‹ˆ๋‹ค. ")()(" ๋˜๋Š” "(()(" ๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ์ž…๋‹ˆ๋‹ค. '(' ๋˜๋Š” ')' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ฌธ์ž์—ด `s`๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ด๋ฉด `true`๋ฅผ return ํ•˜๊ณ , ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ์ด๋ฉด `false`๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ์ œํ•œ์‚ฌํ•ญ๋ฌธ์ž์—ด s์˜ ๊ธธ์ด : 100,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ๋ฌธ์ž์—ด s๋Š” '(' ๋˜๋Š” ')' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.  ์ž…์ถœ๋ ฅ ์˜ˆ `s` `answer``()()` `true``(())()` `true``)()(` `false``(()(` `fa..

[JAVA] ๊ธฐ๋ณธ ์ •๋ ฌ ๋Œ€์‹  ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ

Comparator์™€ Comparable ์ •๋ ฌ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ โ‘ ๋Œ€์ƒ โ‘ก๊ธฐ์ค€ ๋‘๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค. Arrays์™€ Collections ํด๋ž˜์Šค์˜ sort() ๋ฉ”์„œ๋“œ๋Š” ๋Œ€์ƒ๊ณผ ์ •๋ ฌ ๊ธฐ์ค€์„ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋ฉด ๋ฐ˜ํ™˜๊ฐ’ ์—†์ด ๋‚ด๋ถ€์—์„œ ์ •๋ ฌํ•œ๋‹ค. // import java.util.Arrays Integer[] intArr = {3, 6, 2, 1, 4, 5}; Arrays.sort(intArr); // intArr = [1, 2, 3, 4, 5, 6] ์ด๋•Œ ์ •๋ ฌ ๊ธฐ์ค€ ์—†์ด ๋Œ€์ƒ๋งŒ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ ๊ฐ ํด๋ž˜์Šค์— ๊ตฌํ˜„๋˜์–ด์žˆ๋Š” ๊ธฐ๋ณธ ์ •๋ ฌ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜๋Š”๋ฐ, Arrays์™€ Collections๋Š” (์ˆซ์ž์™€ ์•ŒํŒŒ๋ฒณ์ฒ˜๋Ÿผ ์ˆœ์„œ๋กœ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฐ’์ด๋ผ๋ฉด) ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„๋˜์–ด์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ •๋ ฌ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ๋œ..

Java 2023.12.12

[JAVA] ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ(Collection framework)

์–ธ์–ด: java | Collection List์™€ Set์˜ ์กฐ์ƒ. ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์— ์ €์žฅ๋œ ํ…Œ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , ์ถ”๊ฐ€ํ•˜๊ณ , ์‚ญ์ œํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. List Set Map์€ ๋ชจ๋‘ ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฉฐ List์™€ Set์€ ๊ณตํ†ต์ ์ด ๋งŽ์•„ Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋‚˜ Map์€ ์ „ํ˜€ ๋‹ค๋ฅธ ํ˜•ํƒœ๋กœ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ๋ถ€๋ชจ์— ํฌํ•จ๋˜์ง€ ์•Š์•˜๋‹ค. | List ์ˆœ์„œ O, ์ค‘๋ณต O ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ์ค‘๋ณต๋„ ํ—ˆ์šฉํ•จ. ex) ๋Œ€๊ธฐ์ž ๋ช…๋‹จ: ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ ๊ฐ™์€ ์ด๋ฆ„์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ. ์ปฌ๋ ‰์…˜ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค. (์ž๋ฐ”3ํŒ p.584) ๊ตฌํ˜„ํด๋ž˜์Šค: ArrayList, LinkedList, Stack, Vector๋“ฑ ArrayList (๋ฐฐ์—ด๊ธฐ๋ฐ˜) ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค. ์ €..

2์ฐจ์› ๋ฐฐ์—ด(Two dimensional array)

์–ธ์–ด: java | 2์ฐจ์› ๋ฐฐ์—ด ๋ฐฐ์—ด์„ ์š”์†Œ๋กœ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด. ํ–‰๊ณผ ์—ด์ด ์žˆ๋‹ค. *ํ–‰์— ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ€์ง€๋ฏ€๋กœ ํ–‰๋งˆ๋‹ค ์—ด์˜ ๊ธธ์ด(๋ฐฐ์—ด์˜ ๊ธธ์ด)๊ฐ€ ๋‹ค๋ฅธ ๊ฐ€๋ณ€๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. // 2์ฐจ์› ๋ฐฐ์—ด์˜ ์„ ์–ธ int[][] score = { {100, 100, 100}, {20, 20, 20}, {30, 30, 30}, {40, 40, 40}}; // ์ด ๊ฒฝ์šฐ ๋ชจ๋“  ์š”์†Œ์˜ ๊ฐ’์€ ํƒ€์ž…์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ๋จ. int์˜ ๊ธฐ๋ณธ๊ฐ’์€ 0. int[][] arr2 = new int[4][3]; // 2์ฐจ์› ๋ฐฐ์—ด์€ ๋ฐฐ์—ด์˜ ๋ฐฐ์—ด์ด๋ฏ€๋กœ, ๊ธธ์ด๋Š” ํ–‰์˜ ๊ธธ์ด๊ฐ€ ๋œ๋‹ค. System.out.println(score.length); // 4 // ํ–‰๋งˆ๋‹ค ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. score ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ ์—ด์˜ ๊ธธ์ด๊ฐ€ ๋ชจ๋‘ ๊ฐ™..

[Lv.1] ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ

์–ธ์–ด: java [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 2021 KAKAO BLIND RECRUITMENT > ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr [๋ฌธ์ œ ์„ค๋ช…] ์นด์นด์˜ค์— ์ž…์‚ฌํ•œ ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋„ค์˜ค๋Š” "์นด์นด์˜ค๊ณ„์ •๊ฐœ๋ฐœํŒ€"์— ๋ฐฐ์น˜๋˜์–ด, ์นด์นด์˜ค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์˜ ์•„์ด๋””๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "๋„ค์˜ค"์—๊ฒŒ ์ฃผ์–ด์ง„ ์ฒซ ์—…๋ฌด๋Š” ์ƒˆ๋กœ ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์ด ์นด์นด์˜ค ์•„์ด๋”” ๊ทœ์น™์— ๋งž์ง€ ์•Š๋Š” ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, ์ž…๋ ฅ๋œ ์•„์ด๋””์™€ ์œ ์‚ฌํ•˜๋ฉด์„œ ๊ทœ์น™์— ๋งž๋Š” ์•„์ด๋””๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์นด์นด์˜ค ์•„์ด๋””์˜ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. • ์•„์ด๋””์˜..

์ œ์–ด๋ฌธ(Control Statement): ๋ฐ˜๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ

์–ธ์–ด: c++ | ๋ฐ˜๋ณต๋ฌธ1. for๋ฌธfor(์ดˆ๊ธฐํ™”๋ฌธ์žฅ; ๋ฐ˜๋ณต์กฐ๊ฑด; ์ฆ๊ฐ๋ฌธ์žฅ) ๋ฐ˜๋ณตํ• _๋ฌธ์žฅ; ์ฆ๊ฐ๋ฌธ์žฅ์€ ์„ธ๋ฏธ์ฝœ๋ก (;)์„ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค~!~!~~!~!!~~ ๋ถ™์ด๋ฉด ์˜ค๋ฅ˜๋‚œ๋‹ค์•„๋ฌด์ƒ๊ฐ ์—†์ด ์„ธ๋ฏธ์ฝœ๋ก  ๋ถ™์˜€๋‹ค๊ฐ€ ํ™”๋ฉด์ด๋ž‘ ๋ˆˆ์‹ธ์›€ํ•จ ๋ˆˆ์•Œ ๋น ์ง€๋Š” ์ค„ ์•Œ์•˜๋‹คfor๋ฌธ๊ณผ if๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ 10๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•œ๋‹ค. #include using namespace std;int main(){int val, total = 0; for(int = 0; i > val; total += val; cout ํ•ฉ๊ณ„๋Š” total์ž…๋‹ˆ๋‹ค.  ์—ฌ๊ธฐ์„œ ๋‚˜๋Š” ํ•œ ๊ฐœ์˜ ๊ฐ’์„ ์ž…๋ ฅํ•  ๋•Œ๋งˆ๋‹ค "i++๋ฒˆ์งธ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”."๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.๋งจ ์ฒ˜์Œ์—๋Š” "1๋ฒˆ์งธ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”."๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ, i๊ฐ€..

์ปดํŒŒ์ผ๋Ÿฌ(compiler)

์‚ฌ๋žŒ์ด ์“ฐ๋Š” ์–ธ์–ด๋ฅผ ์ž์—ฐ์–ธ์–ด, ์ปดํ“จํ„ฐ ์–ธ์–ด๋ฅผ ์ธ๊ณต์–ธ์–ด๋ผ๊ณ  ํ•œ๋‹ค. ์ปดํ“จํ„ฐ๋Š” 0๊ณผ 1๋กœ ๊ตฌ์„ฑ๋œ 2์ง„๋ฒ• ๊ธฐ๊ณ„์–ด๋งŒ ์ทจ๊ธ‰ํ•˜๋ฏ€๋กœ ์‚ฌ๋žŒ์ด ๋ช…๋ น์–ด๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ์— ๋งค์šฐ ๋ถˆํŽธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์กฐ๊ธˆ ๋” ํŽธ๋ฆฌํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋„ ๊ธฐ๊ณ„์–ด๋ณด๋‹ค ์กฐ๊ธˆ ํŽธ๋ฆฌํ•  ๋ฟ ๋‹ค๋ฃจ๊ธฐ์— ์—ฌ์ „ํžˆ ์–ด๋ ค์› ๋‹ค. ํ•ด์„œ ์‚ฌ๋žŒ๋“ค์€ ์˜์–ด์™€ ์œ ์‚ฌํ•œ ๊ณ ๊ธ‰์–ธ์–ด๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. COBOL, PASCAL, ๊ทธ๋ฆฌ๊ณ  ์ตœ๊ทผ์—๋„ ์‚ฌ์šฉํ•˜๋Š” C, C++, JAVA ๋“ฑ์ด ๋ชจ๋‘ ๊ณ ๊ธ‰์–ธ์–ด๋‹ค. ๊ธฐ๊ณ„์–ด๋ณด๋‹ค๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๊ฐ€, ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ณด๋‹ค๋Š” ๊ณ ๊ธ‰์–ธ์–ด๊ฐ€ ๋ฐฐ์šฐ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ์— ์‰ฝ๊ณ  ์œ ์šฉํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๊ณ ๊ธ‰์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ–ˆ๋‹ค. ์›์‹œํ”„๋กœ๊ทธ๋žจ ๋ฒˆ์—ญ๊ธฐ ๋ชฉ์ ํ”„๋กœ๊ทธ๋žจ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ์–ด์…ˆ๋ธ”๋Ÿฌ ๊ธฐ๊ณ„์–ด ๊ณ ๊ธ‰์–ธ์–ด ..

[C++] ๊ธฐ์ดˆ

| C++์–ธ์–ด์˜ ๊ฐœ์š”C++์–ธ์–ด๋Š” C์–ธ์–ด๋ฅผ ํ™•์žฅํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‹ค. ๋ช‡๊ฐ€์ง€ ์˜ˆ์™ธ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” C์˜ ๋ฌธ๋ฒ•์„ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ฅธ๋‹ค. ์ฃผ์š” ํ™•์žฅ ๋‚ด์šฉ- ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ํด๋ž˜์Šค, ์ƒ์†, ๋‹คํ˜•์„ฑ, ๋™์ ๋ฐ”์ธ๋”ฉ ๋“ฑ- ์ผ๋ฐ˜ํ™” ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ํƒฌํ”Œ๋ฆฟ- ์˜ˆ์™ธ ์ฒ˜๋ฆฌ  | C++์–ธ์–ด์˜ ์ž‘์„ฑ ๋ฐ ๋นŒ๋“œ | ์†Œ์Šค ํŒŒ์ผ(์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ผ): C++๋กœ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ด๊ณ  ์žˆ๋Š” ํŒŒ์ผ์„ ์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ผ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ฒ˜๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ž‘์—…์˜ C++ ๋ช…๋ น์–ด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํŒŒ์ผ์„ ๋งํ•œ๋‹ค. ํ™•์žฅ์ž๋Š” .cpp, .cxx, .C (์ผ๋ฐ˜์ ์œผ๋กœ .cpp๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.)| ํ—ค๋” ํŒŒ์ผ: ์—ฌ๋Ÿฌ ์†Œ์Šค ํŒŒ์ผ์— ๊ณตํ†ต์ ์œผ๋กœ ์„ ์–ธ๋˜๋Š” ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๋Š” ํŒŒ์ผ์ด๋‹ค. #include๋ผ๋Š” ์„ ํ–‰์ฒ˜๋ฆฌ๊ธฐ ์ง€์‹œ์–ด์— ์˜ํ•ด ์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ผ์— ์‚ฝ์ž…๋˜์–ด ํ•จ๊ป˜ ์ปดํŒŒ..

C, C++ 2023.08.25