์ „์ฒด ๊ธ€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

ํ•ด๋‹น ๊ธ€ 151๊ฑด

https://school.programmers.co.kr/learn/courses/30/lessons/86971 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr 1. ๋ฌธ์ œ ํŠธ๋ฆฌํ˜•ํƒœ๋กœ N๊ฐœ์˜ ์†ก์ „ํƒ‘์ด ์ฃผ์–ด์ง„๋‹ค. ์ด ์—ฐ๊ฒฐ๋œ ์ „์„ ๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ๋Š์–ด์„œ ๋„คํŠธ์›Œํฌ๋ฅผ 2๊ฐœ๋กœ ๋ถ„ํ• ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋ถ„ํ• ๋œ ๋‘ ๋„คํŠธ์›Œํฌ๊ฐ€ ๊ฐ–๋Š” ์†ก์ „ํƒ‘์˜ ๊ฐœ์ˆ˜์˜ ์ฐจ์˜ ์ ˆ๋Œ“๊ฐ’์ด ์ตœ์†Œ๊ฐ€๋  ๋•Œ์˜ ์ ˆ๋Œ“๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. 2. ํ’€์ด bfs๋กœ ํ’€์—ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์ œํ•œ์‚ฌํ•ญ์„ ์ž˜ ์ฝ์–ด์•ผ ํ•œ๋‹ค. wires๋Š” ๊ธธ์ด๊ฐ€ n-1์ธ ์ •์ˆ˜ํ˜• 2์ฐจ์› ๋ฐฐ์—ด์ด๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๋กœ์ง์œผ๋กœ ํ’€์—ˆ๋‹ค. 0. min์€ Integer.MAX_..

Algorithm/Programmers 2023. 9. 20. 22:01

https://school.programmers.co.kr/learn/courses/30/lessons/87946 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr 1. ๋ฌธ์ œ ํ˜„์žฌ ํ”ผ๋กœ๋„ k, ๋˜์ „ ์ด์ฐจ์› ๋ฐฐ์—ด([0]: ์ตœ์†Œ ํ•„์š” ํ”ผ๋กœ๋„, [1]: ์†Œ๋ชจ ํ”ผ๋กœ๋„)์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ์œ ์ €๊ฐ€ ํƒํ—˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋˜์ „ ์ˆ˜์ด๋‹ค. ๋˜์ „ ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ์˜ˆ๋ฅผ ๋“ค์–ด [80,20]์ผ ๊ฒฝ์šฐ, ์ฒซ๋ฒˆ์งธ ๋˜์ „์— ์ž…์žฅํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œ ํ”ผ๋กœ๋„๋Š” 80, ์ž…์žฅ ํ›„ ์†Œ๋ชจ๋˜๋Š” ํ”ผ๋กœ๋„๋Š” 20์ธ ๊ฒƒ์ด๋‹ค. 2. ํ’€์ด ์ˆœ์—ด ๋ฌธ์ œ์ด๋‹ค. ๋˜์ „์˜ ์ˆœ์„œ๋ฅผ ์ˆœ์—ด๋กœ ์ค„์„ธ์›Œ ๊ฐ€์žฅ ๋งŽ์ด ์ž…์žฅํ•  ์ˆ˜ ์žˆ๋Š” ma..

Algorithm/Programmers 2023. 9. 20. 21:53

์ด์ „์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„œ๋น„์Šค ๋‹จ์—์„œ ๋น„๋™๊ธฐ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ try/catch ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ RejectedExecutorException์— ๋Œ€ํ•œ ๋ฐฉ์–ด๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ๋˜๊ณ  ํšŒ์‚ฌ์— ๊ณต์œ ํ•˜์˜€๋Š”๋ฐ ์‹ ๊ธฐํ•œ ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. try/catch๋ฌธ์œผ๋กœ ๋ฐฉ์–ด๋กœ์ง์„ ์ถ”๊ฐ€ํ•ด์ฃผ์ง€ ์•Š์•„๋„ AsyncConfig์—์„œ RejectedExecutorException์— ๋Œ€ํ•œ ๋Œ€์‘ ์ฒ˜๋ฆฌ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋ฐ”๋กœ ์ด๋ ‡๊ฒŒ ๋ง์ด๋‹ค .. setRejectedExecutionHandler : RejectedExecution ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€์— ๋Œ€ํ•œ ์˜ต์…˜์ด๋‹ค. new ThreadPoolExecutor์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. - AbortPolicy : ๋””ํดํŠธ๊ฐ’. RejectedEx..

Web/๋น„๋™๊ธฐ 2023. 9. 20. 21:42

์ด์ „์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„œ๋น„์Šค ๋‹จ์—์„œ ๋น„๋™๊ธฐ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ try/catch ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ RejectedExecutorException์— ๋Œ€ํ•œ ๋ฐฉ์–ด๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ๋˜๊ณ  ํšŒ์‚ฌ์— ๊ณต์œ ํ•˜์˜€๋Š”๋ฐ ์‹ ๊ธฐํ•œ ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. try/catch๋ฌธ์œผ๋กœ ๋ฐฉ์–ด๋กœ์ง์„ ์ถ”๊ฐ€ํ•ด์ฃผ์ง€ ์•Š์•„๋„ AsyncConfig์—์„œ RejectedExecutorException์— ๋Œ€ํ•œ ๋Œ€์‘ ์ฒ˜๋ฆฌ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋ฐ”๋กœ ์ด๋ ‡๊ฒŒ ๋ง์ด๋‹ค .. setRejectedExecutionHandler : RejectedExecution ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€์— ๋Œ€ํ•œ ์˜ต์…˜์ด๋‹ค. new ThreadPoolExecutor์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. - AbortPolicy : ๋””ํดํŠธ๊ฐ’. RejectedEx..

Web/๋น„๋™๊ธฐ 2023. 9. 18. 21:56

https://school.programmers.co.kr/learn/courses/30/lessons/42839 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr 1. ๋ฌธ์ œ ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์˜ ๊ฐ ์ž๋ฆฌ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. 2. ํ’€์ด ๋ถ€๋ถ„์ง‘ํ•ฉ + ์ˆœ์—ด + ์†Œ์ˆ˜๊ตฌํ•˜๊ธฐ ๋กœ ํ’€์—ˆ๋‹ค. ์ค‘๋ณต์ฒดํฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด HashMap 2๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. 1. ๋ฌธ์ž์—ด์˜ ๊ฐ ์ž๋ฆฌ๋ฅผ ๋ถ€๋ถ„์ง‘ํ•ฉ์œผ๋กœ ์กฐํ•ฉํ•œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์—์„œ (HashMap์œผ๋กœ ์ค‘๋ณต์ฒดํฌ1) 2. ๊ฐ ์ž๋ฆฌ๋ฅผ ์ˆœ์—ด๋กœ ๋ฐฐ์น˜ํ•˜์˜€๊ณ  (HashMap์œผ๋กœ ์ค‘๋ณต์ฒดํฌ2) 3. ์ตœ์ข…์ ์œผ๋กœ ๋‚จ์€ ๋ฌธ์ž์—ด์€ ์†Œ์ˆ˜๊ตฌํ•˜๊ธฐ๋ฅผ ..

Algorithm/Programmers 2023. 9. 18. 21:34

์šฐ๋ฆฌ๊ฐ€ Spring์—์„œ @Async์™€ @EnableAsync ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋น„๋™๊ธฐ์— ๊ด€ํ•œ ์„ค์ •์„ ์ปค์Šคํ…€ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ @Async์–ด๋…ธํ…Œ์ด์…˜์€ SimpleAsyncUncaughtExceptionHandler๋ฅผ ์ƒ์†๋ฐ›๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๐Ÿ”ฝ SimpleAsyncUncaughtExceptionHandler๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž์„ธํ•œ ์ฝ”๋“œ ๋”๋ณด๊ธฐ AsyncConfig ๋•Œ๋ฌธ์— AsyncConfigurerSupport๋ฅผ ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ปค์Šคํ…€ํ•ด๋ณด์ž. ์ฃผ์˜! AsyncCongifurer๋ฅผ ์ƒ์†๋ฐ›์•„์•ผ ํ•  ๊นŒ, AsyncConfigurerSupport๋ฅผ ์ƒ์†๋ฐ›์•„์•ผ ํ• ๊นŒ? -> ๋‘˜ ๋‹ค ๊ฐ€๋Šฅ. ํ•˜์ง€๋งŒ AsyncConfigurerSupport(ํด๋ž˜์Šค..

Web/๋น„๋™๊ธฐ 2023. 9. 17. 15:49

์ตœ๊ทผ ํ”„๋กœ์ ํŠธ์—์„œ Spring Event์™€ ๋น„๋™๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ๋น„๋™๊ธฐ๋ฅผ ๊ณต๋ถ€ํ•˜๋Š” ๊น€์— ๋ณต์Šต์‚ผ์•„ ์Šคํ”„๋ง ์ด๋ฒคํŠธ๋„ ๊ฐ™์ด ์ ์šฉํ•ด๋ณด์•˜๋‹ค. ์Šคํ”„๋ง ์ด๋ฒคํŠธ๋ž€? Spring Event๋ž€ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‚ด๋ถ€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์Šคํ”„๋ง ๋‚ด๋ถ€์—์„œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ (publish) ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š”(listen) ๋กœ์ง์„ ๋ถ„๋ฆฌํ•ด์„œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์Šคํ”„๋ง ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  - ์Šคํ”„๋ง์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์˜์กด์„ฑ์ด ๋‚ฎ์•„์ง„๋‹ค. - ํ•ต์‹ฌ๋กœ์ง๊ณผ ์ด์™ธ์˜ ๊ด€๋ จ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž์˜ ์ƒํ’ˆ ์ฃผ๋ฌธ์„ ์ฒ˜๋ฆฌํ•˜๋Š” api๊ฐ€ ์žˆ๋‹ค. ํ•ด๋‹น api์˜ ์„œ๋น„์Šค ๋‹จ์—๋Š” 1. ์ฃผ๋ฌธํ•œ ์ƒํ’ˆ DB์— ์ €์žฅ 2. ํ‘ธ์‰ฌ ๋ฉ”์‹œ์ง€, ๋ฉ”์ผ ์ „์†ก ๊ณผ ๊ฐ™์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์—ฌ๊ธฐ์„œ..

Web/๋น„๋™๊ธฐ 2023. 9. 17. 15:39

๋ฌธ์ œ ์ƒํ™ฉ ๋น„๋™๊ธฐ ๊ณต๋ถ€๋ฅผ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ JPA๋ฅผ ์‚ฌ์šฉ๋ฉด์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ค ์งœ๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๋ ค๋Š”๋ฐ ์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค. TransactionRequiredException.. ํŠธ๋žœ์žญ์…˜์ด ํ•„์ˆ˜๋ผ๋Š” ๋‚ด์šฉ์˜ ์ต์…‰์…˜์ธ ๋“ฏ ํ•˜๋‹ค. ํ˜„์žฌ ์“ฐ๋ ˆ๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์ด ์žˆ๋Š” ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ € ๊ฐ์ฒด๊ฐ€ ์—†๋‹ค - persist๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค ์ด๋Ÿฐ๋ง์ผ๊นŒ ์•Œ๊ณ ๋ณด๋‹ˆ ๋‚ด๊ฐ€ ํ•˜๋Š” ์ž‘์—…์— ํŠธ๋žœ์žญ์…˜ ์„ ์–ธ์„ ํ•ด์•ผ๋งŒ ํ–ˆ๋‹ค. JPA๋Š” Transaction์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋˜์–ด์žˆ๋‹ค. Transaction์˜ ๋‹จ์œ„์— ๋”ฐ๋ผ 1์ฐจ ์บ์‹œ์˜์—ญ์— ์žˆ๋Š” ๊ฐ์ฒด๋“ค์ด DB์— flush๋˜์–ด ์˜์†ํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฌํ•œ ์˜์†์ž‘์—…์„ ํ•˜๋Š” persist() ๋ฉ”์†Œ๋“œ์— ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด๊ฐ”์œผ๋‚˜, ๊ฐ€๋Šฅํ•œ Transaction์ด ์กด์žฌํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ..

Web/๋น„๋™๊ธฐ 2023. 9. 17. 14:27