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

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

3. Linked List ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋ž€? ํฌ์ธํ„ฐ๋กœ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค์˜ ์ปฌ๋ ‰์…˜์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ณ , ์Šคํƒ, ํ, ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์‹œ์ž‘ ์ง€์ ์— ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ O(1) ์ƒ์ˆ˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค. ๋…ธ๋“œ ํด๋ž˜์Šค ์ฝ”๋“œ ์˜ˆ์‹œ public class Node { int val; Node next; ListNode() {} Node(int val) { this.val = val; } Node(int val, Node next) { this.val = val; this.next = next; } } ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํŒ ๐Ÿ—๏ธ Recursion๋„ ์•Œ์•„์•ผ ํ•˜๊ณ  ๊ทธ ์–ด๋ ต๋‹ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฆผ์„ ๋งŽ์ด ๊ทธ๋ ค๋ณด๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ๋”ฐ๋ผ๊ฐ€ ๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๋งŒ์•ฝ Easy ๋ฌธ์ œ๋„ ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ๋Š๊ปด์ง„๋‹ค๋ฉด .. 2024. 3. 9.
2. Arrays ๋ฐฐ์—ด์ด๋ž€? ๊ฐ™์€ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์œ„์น˜ํ•ด ์ธ๋ฑ์Šค๋กœ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ์ƒ์„ฑํ•  ๋•Œ ์ •ํ•ด์ง€๋ฉฐ ํ•œ ๋ฒˆ ์ƒ์„ฑํ•˜๋ฉด ์‚ฌ์ด์ฆˆ๋Š” ๊ณ ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค. ๋งŒ์•ฝ ๋™์  ๋ฐฐ์—ด์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ, ์ž๋ฐ”์—์„œ๋Š” ArrayList๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค(c++์—์„œ๋Š” vector). ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํŒ ๐Ÿ—๏ธ ๋ฐฐ์—ด์€ ๋‚˜์ค‘์— ์–ด๋ ค์šด ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ๊ธฐ๋ณธ์œผ๋กœ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด ๊ด€๋ จ ์ฝ”๋“œ๋Š” ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•œ๋‹ค. ๋ฐฐ์—ด๊ด€๋ จ ๋ฌธ์ œ๋Š” ์ข…๋ฅ˜๋„ ๋‹ค์–‘ํ•˜๊ณ  ๋‚œ์ด๋„๊ฐ€ ์ฒ˜์Œ ์ ‘ํ•˜๋ฉด ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ค์šด ๋ฌธ์ œ๋“ค์ด ๋งŽ๋‹ค. prefix sum, sliding window, two pointer ๊ฐ™์€ ๊ฐœ๋…์„ ๋ฐฐ์—ด ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์•Œ์•„๋‘๋ฉด ์ข‹๊ณ , HashMap๋„ ๋งŽ์ด ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์‹œ๋งต์˜ ๋ฉ”์†Œ๋“œ๋ฅผ.. 2024. 3. 2.
์—…๋ฌด ํšจ์œจ์„ ์˜ฌ๋ ค์ฃผ๋Š” Intellij ๋‹จ์ถ•ํ‚ค (์œˆ๋„์šฐ ๊ธฐ์ค€) ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ถ•ํ‚ค ์ •๋ฆฌ 1. ๋ผ์ธ ๋ณต์‚ฌ CTRL + D 2. ๋ผ์ธ ์‚ญ์ œ CTRL + Y 3. ๋ผ์ธ ์œ„๋กœ ์ด๋™ SHIFT + ALT + โฌ†๏ธ 4. ๋ผ์ธ ์•„๋ž˜๋กœ ์ด๋™ SHIFT + ALT + โฌ‡๏ธ 5. ํ•œ๊ธ€์ž์”ฉ ์„ ํƒ SHIFT + โฌ…๏ธ/โžก๏ธ 6. ๋‹จ์–ด๋ณ„๋กœ ์„ ํƒ SHIFT + CTRL + โฌ…๏ธ/โžก๏ธ 7. ์•ˆ์“ฐ๋Š” import ์ง€์šฐ๊ธฐ CTRL + SHIFT + O 8. ๋ณ€์ˆ˜ ์ด๋ฆ„ ์ƒ์„ฑ CTRL + ALT + V 9. ์ „์ฒด ์ฐพ๊ธฐ SHIFT ๋‘๋ฒˆ 10. ๋’ค๋กœ๊ฐ€๊ธฐ CTRL + ALT + โฌ…๏ธ 11. ์•ž์œผ๋กœ ๊ฐ€๊ธฐ CTRL + ALT + โžก๏ธ 12. ํ”„๋กœ์ ํŠธ ํด๋” ๋ทฐ๋กœ ์ด๋™ ALT + 1 13. ๋ธ”๋Ÿญ ์ฝ”๋ฉ˜ํŠธ( /* */) CTRL + SHIFT + / 14. ์ฝ”๋“œ ์ ‘๊ณ  ํŽผ์น˜๊ธฐ CTRL + โž•/โž– 15... 2024. 2. 25.
Spring Boot file upload download rest api ์˜ˆ์ œ - 1 ๐Ÿ“ ์Šคํ”„๋ง ๋ถ€ํŠธ๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ ๋‹ค์šด๋กœ๋“œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ์ฒซ ํšŒ์‚ฌ์˜ ์ˆ˜์Šต๊ณผ์ œ๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ ๋‹ค์šด๋กœ๋“œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“  ์ ์ด ์žˆ๋Š”๋ฐ ๊ฒ€์ƒ‰์„ ํ•˜๋ฉด JSP๋กœ ๊ตฌํ˜„๋œ ์˜ˆ์ œ๊ฐ€ ๋งŽ์•„์„œ ํ”„๋ก ํŠธ๊ฐ€ React๋‚˜ Vue์ผ๋•Œ ์–ด๋–ป๊ฒŒ ํŒŒ์ผ ์—…๋กœ๋“œ ๋‹ค์šด๋กœ๋“œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ง‰๋ง‰ํ–ˆ์—ˆ๋‹ค. ๋‹คํ–‰์ด ๊นƒํ—ˆ๋ธŒ์—์„œ ์ž˜ ์ •๋ฆฌ๋œ ์ฝ”๋“œ๋ฅผ ์ฐพ์•„์„œ ๊ณผ์ œ๋ฅผ ์ž˜ ๋งˆ๋ฌด๋ฆฌ ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ํ•ด๋‹น ๊นƒํ—ˆ๋ธŒ ์˜ˆ์ œ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ตฌํ˜„ ํ•  ๋•Œ ์•„์‰ฌ์› ๋˜ ์ ๊ณผ ๊ทธ๋•Œ๋Š” ์ž˜ ๋ชฐ๋ž๋˜ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. 1๏ธโƒฃ Failed to perform cleanup of multipart items ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฒ„์ „ ๋ณ€๊ฒฝ์—์„œ inputStream.close() ์ถ”๊ฐ€ํ•˜๋Š” ๊ฑธ๋กœ ์ˆ˜์ • - Caused by: java.io.IOException: Cannot delete ๊ฒฝ๋กœ\ํŒŒ์ผ์ด๋ฆ„.. 2024. 2. 19.
์ž๋ฐ” iterators๋ž€? ๐Ÿฃ Java Iteration ๐Ÿฃ Java์—์„œ Map ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด๋ฉด for๋ฌธ์„ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•๊ณผ iterator๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ• 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ iterator๋กœ Map์„ ์ˆœํšŒํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ธํ…”๋ฆฌ์ œ์ด์—์„œ๋Š” ํ–ฅ์ƒ๋œ for๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ์ถ”์ฒœํ•˜๋Š”๋Œ€๋กœ enhanced 'for' loop์œผ๋กœ ๋ฐ”๊ฟ”๋ณด๋ฉด ๊ธฐ์กด์— ์ž‘์„ฑํ•œ for๋ฌธ์„ ํ™œ์šฉํ•œ Map ์ˆœํšŒ๋ฐฉ๋ฒ•๊ณผ ๋˜‘๊ฐ™์ด ๋ณ€๊ฒฝ๋˜๋Š”๋ฐ ํ–ฅ์ƒ๋œ for๋ฌธ์€ ์‚ฌ์‹ค iterator object๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ˆœํšŒํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ์˜ˆ์˜๊ฒŒ ๋ฐ”๊ฟ”๋†“์€ ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. (๋ฌผ๋ก , iterator๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ˆœํšŒํ•˜๋Š” ๋„์ค‘์— ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ํ–ฅ์ƒ๋œ for๋ฌธ์€ ConcurrentModificationException์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœํšŒ ๋„์ค‘.. 2024. 2. 11.
์ž๋ฐ”์—์„œ Map ์ˆœํšŒ ๋ฐฉ๋ฒ• ๐Ÿฃ Java์—์„œ Map ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ• ๐Ÿฃ ์ž๋ฐ”์—์„œ Map์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆด ๋•Œ entrySet(), keySet() ๊ทธ๋ฆฌ๊ณ  values()๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ๊บผ๋‚ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค. entrySet() : Map.Entry ํด๋ž˜์Šค์˜ ์›์†Œ ๋ฐ˜ํ™˜. entry.getKey() ๋Š” key๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , entry.getValue()๋Š” value ๋ฆฌํ„ด keySet() : ๋งต์— ์žˆ๋Š” ๋ชจ๋“  keys๋ฅผ set์œผ๋กœ ๋ฐ˜ํ™˜ values() : ๋งต์— ์žˆ๋Š” ๋ชจ๋“  values๋ฅผ set์œผ๋กœ ๋ฐ˜ํ™˜ Map ์„ธํŒ… Map map = new HashMap(); @BeforeEach void setUp() { map.put(1, "๋”ธ๊ธฐ"); map.put(2, "์‚ฌ๊ณผ"); map.put(3, "๊ทค"); map.put(4, "๋ฐ”๋‚˜๋‚˜"); map.put(.. 2024. 1. 27.