๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€77

[PS / ๋ฐฑ์ค€] 12904. A์™€ B https://www.acmicpc.net/problem/12904  ํ’€์ดS๊ฐ€ T๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋”ฐ์ง€์ง€ ์•Š๊ณ  T๊ฐ€ S๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋”ฐ์ง€๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.T๊ฐ€ S๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋”ฐ์ง€๋ฉด ๊ฒฝ์šฐ๊ฐ€ ๋”ฑ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค. (i) T๊ฐ€ A๋กœ ๋๋‚จ => T์˜ ๋งจ ๋’ค์— ์žˆ๋Š” A๋ฅผ ๋–ผ๋ฉด๋œ๋‹ค.(ii) T๊ฐ€ B๋กœ ๋๋‚จ => T์˜ ๋งจ ๋’ค์— ์žˆ๋Š” B๋ฅผ ๋–ผ๊ณ  ๋ฌธ์ž์—ด์„ ๋’ค์ง‘๋Š”๋‹ค. ์œ„ ๋‘ ๊ฒฝ์šฐ์˜ ์—ฐ์‚ฐ์„ T์™€ S์˜ ๊ธธ์ด๊ฐ€ ๋™์ผํ•ด์งˆ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์˜ค๋žœ๋งŒ์— StringBuilder๋ฅผ ์จ๋ณด๋‹ˆ๊นŒ ๋ฉ”์†Œ๋“œ๋“ค์ด ์ž˜ ๊ธฐ์–ต๋‚˜์ง€๊ฐ€ ์•Š์•˜๋‹ค.delete(์‹œ์ž‘์ธ๋ฑ์Šค, ๋์ธ๋ฑ์Šค), reverse(), charAt() ์ •๋„๋Š” ๊ผญ ๊ธฐ์–ตํ•ด๋‘์ž์ „์ฒด ์ฝ”๋“œimport java.io.BufferedReader;import java.io.InputSt.. 2024. 11. 8.
[SQL / ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] JOIN ๋ฌธ์ œ ๋ชจ์Œ https://school.programmers.co.kr/learn/courses/30/lessons/131117 ํ”„๋กœ๊ทธ๋ž˜๋จธ์ŠคSW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„programmers.co.kr ์šฐ์„  5์›”์— ๋งŒ๋“ค์–ด์ง„ ์ƒํ’ˆ๋“ค์˜ ์ด ์ฃผ๋ฌธ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.ํ•ด๋‹น ์ฟผ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.SELECT PRODUCT_ID, SUM(AMOUNT)FROM FOOD_ORDERWHERE PRODUCE_DATE >= '2022-05-01' AND PRODUCE_DATE  ๊ทธ๋ฆฌ๊ณ  ์ € AMOUNT์˜ ํ•ฉ๊ณผ ๊ฐ€๊ฒฉ์„ ๊ณฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ JOIN์„ ํ™œ์šฉํ•ด์„œ ์ •๋‹ต์ฟผ๋ฆฌ๋ฅผ ์ผ์Šต๋‹ˆ๋‹ค. SELECT FP.PRODUCT_ID AS PRODUCT_ID, F.. 2024. 11. 7.
[SQL / ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ทธ๋ฃน๋ณ„ ์กฐ๊ฑด์— ๋งž๋Š” ์‹๋‹น ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ https://school.programmers.co.kr/learn/courses/30/lessons/131124 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.programmers.co.kr WHERE ์ ˆ์— ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์จ์„œ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.  1. ๊ฐ€์žฅ ๋ฆฌ๋ทฐ๋ฅผ ๋งŽ์ด ์“ด ํšŒ์› ์•„์ด๋”” ์ฐพ๊ธฐREST_REVIEW ํ…Œ์ด๋ธ”์—์„œ ๊ฐ€์žฅ ๋ฆฌ๋ทฐ๋ฅผ ๋งŽ์ด ์ž‘์„ฑํ•œ ํšŒ์›์„ ์ฐพ์•„์ค๋‹ˆ๋‹ค.ํ•ด๋‹น ์ฟผ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. SELECT MEMBER_IDFROM REST_REVIEWGROUP BY MEMBER_IDORDER BY COUNT(*) DESC LIMIT 1;  2. ๊ฐ€์žฅ ๋ฆฌ๋ทฐ๋ฅผ ๋งŽ์ด ์“ด ํšŒ์›์˜ ๋ฆฌ๋ทฐ ๋‚ด์šฉ ์ถœ๋ ฅ์œ„์—์„œ.. 2024. 10. 18.
๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ 5์›์น™ - SOLID SRP - ๋‹จ์ผ ์ฑ…์ž„ ์›์น™โญ๏ธ ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ์˜ค์ง ํ•˜๋‚˜๋ฟ์ด์–ด์•ผ ํ•œ๋‹ค์ฆ‰ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์—ญํ• ๋งŒ ํ•ด์•ผํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ๋งก๊ณ  ์žˆ์„ ๋•Œ ๊ฐ์ฒด์ง€ํ–ฅ์—์„œ๋Š” '๋‚˜์œ ๋ƒ„์ƒˆ๊ฐ€ ๋‚˜๋Š” ์ฝ”๋“œ'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.SRP๊ฐ€ ์ž˜ ์ง€์ผœ์ง€์ง€ ์•Š์€ ์„ค๊ณ„์˜ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž.โœ๏ธ EX 1)์‚ฌ๋žŒ ํด๋ž˜์Šค๊ฐ€ ์žˆ๊ณ , ์ด ์‚ฌ๋žŒ ํด๋ž˜์Šค์— ์˜์กดํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํด๋ž˜์Šค๋“ค(์• ์ธ, ๋ถ€๋ชจ๋‹˜, ํšŒ์‚ฌ ๋“ฑ)์ด ์กด์žฌํ•œ๋‹ค๊ณ  ํ•˜์ž.์ด ์‚ฌ๋žŒ ํด๋ž˜์Šค ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์—ญํ• ์— ํ•ด๋‹นํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๋ชจ๋‘ ๋„ฃ๋Š” ๊ฒฝ์šฐ๊ฐ€ SRP๊ฐ€ ์ž˜ ์ง€์ผœ์ง€์ง€ ์•Š์€ ์„ค๊ณ„์ด๋‹ค. ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.์•„๋ž˜์™€ ๊ฐ™์ด ์—ญํ• ์„ ๋‚˜๋ˆ„์–ด ํด๋ž˜์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค๋ฉด SRP๋ฅผ ์ž˜ ์ง€ํ‚จ ๋” ์ข‹์€ ์„ค๊ณ„๊ฐ€ ๋œ๋‹ค.โœ๏ธ EX 2)๋” ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž. ๋งŒ์•ฝ .. 2024. 10. 14.
ํ•œํ™” ์‹œ์Šคํ…œ Beyond SW 7๊ธฐ 22์ฃผ์ฐจ ํšŒ๊ณ  ์ง„์งœ ์˜ค๋žœ๋งŒ์— ํšŒ๊ณ  ์“ด๋‹ค..์ด๋ฒˆ์ฃผ๋Š” ์ง„์งœ ์—„์ฒญ ๊ณ ๋ฏผ์ด ๋งŽ์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค.์™œ๋ƒ๋ฉด ๋ฉด์ ‘, ์ฝ”ํ…Œ ์ผ์ •์ด ์ข€ ์žกํ˜”๋Š”๋ฐ ์ง€๊ธˆํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ž‘ ๋ฉด์ ‘ ์ค€๋น„, ์ฝ”ํ…Œ ์ค€๋น„ ์ค‘์— ์–ด๋–ค ๊ฒƒ์— ์ง‘์ค‘ํ•ด์•ผํ• ์ง€ ๊ณ„์† ๋ชป์ •ํ•˜๊ณ  ๊ฐˆํŒก์งˆํŒกํ–ˆ์—ˆ๋‹ค.๋ญ”๊ฐ€ ์ฝ”ํ…Œ, ๋ฉด์ ‘ ๊ธฐํšŒ๊ฐ€ ์ฃผ์–ด์กŒ๋Š”๋ฐ ๊ทธ ์ „๋‚ ์—๋„ ๊ณต๋ถ€์•ˆํ•˜๊ณ  ํ”„์ ํ•˜๊ณ  ์žˆ์œผ๋ฉด ์ตœ์„ ์„ ๋‹คํ•˜์ง€ ์•Š๋Š”๊ฑฐ ๊ฐ™์•„์„œ ์ฐœ์ฐœํ•˜๊ณ .. ํ”„์ ์ด๋ž‘ ์ฝ”ํ…Œ ๋‘˜๋‹ค ์กฐ๊ธˆ์”ฉ์กฐ๊ธˆ์”ฉ ํ•ด๋ณผ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋‚ด ์˜ˆ์ƒ๋ณด๋‹ค ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“ค์–ด๊ฐ€์„œ ์ƒ๊ฐ๋Œ€๋กœ ์ž˜ ์•ˆ๋๋‹ค.์˜ˆ๋ฅผ ๋“ค๋ฉด '์˜คํ›„ 7์‹œ๋ถ€ํ„ฐ 9์‹œ๊นŒ์ง€ ๋‘์‹œ๊ฐ„๋งŒ ๋ฉด์ ‘ ์ค€๋น„ํ•˜๊ณ , 9์‹œ๋ถ€ํ„ฐ 11์‹œ๊นŒ์ง„ ์ฝ”ํ…Œ ์ค€๋น„ํ•ด์•ผ์ง€~' ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๋ฉด์ ‘ ์ค€๋น„๊ฐ€ ๋‚ด ์˜ˆ์ƒ๋ณด๋‹ค ์˜ค๋ž˜๊ฑธ๋ ค์„œ ๊ทธ๋ƒฅ ๊ทธ๋‚  ๊ณ„์† ๋ฉด์ ‘ ์ค€๋น„๋งŒ ํ•˜๋‹ค ์ž”๋‹ค๋“ ๊ฐ€ ๊ณ„์† ๊ทธ๋Ÿฐ์‹์ด์—ˆ๋‹ค.๊ทธ๋ž˜์„œ ํ”„์ ํ•  ์‹œ๊ฐ„์€ ์ ์  ์—†์–ด์ง€๊ณ  ๊ฒฐ๊ตญ ํ•™์›์— ์žˆ๋Š” 8์‹œ๊ฐ„ ๋ง๊ณ .. 2024. 10. 12.
์ผ๊ธ‰ ์ปฌ๋ ‰์…˜(First Class Collection)์— ๋Œ€ํ•ด ์•ฝ ๋‘๋‹ฌ์ „ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉฐ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ์ •๋ ฌ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. // ์•ก์…˜ ์•„์ดํ…œ ๋ชจ๋‘ ๋ฝ‘์•„์˜ค๊ธฐ List idList = doneRetrospects.stream().map(Retrospect::getId).toList(); List actionItemList = actionItemRepository.findAllByRetrospectIdIn(idList).stream() .sorted((a, b) -> { if(a.getIsPinned() && b.getIsPinned() && a.getActionItemStatus().equals(b.g.. 2024. 10. 9.