์ „์ฒด ๊ธ€ 29

Manacher ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Manacher's Algorithm)

โœ… ํŒฐ๋ฆฐ๋“œ๋กฌ(palindrome) ์ด๋ž€?ํŒฐ๋ฆฐ๋“œ๋กฌ์€ ์ˆœ๋ฐฉํ–ฅ์œผ๋กœ ์ฝ์—ˆ์„ ๋•Œ์™€ ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ์ฝ์—ˆ์„ ๋•Œ ๊ฐ™์€ ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•œ๋‹ค.๋ฌธ์ž์—ด๋’ค์ง‘์€ ๋ฌธ์ž์—ด๊ฒฐ๊ณผAApalindromeBBBBpalindromeABDDSSDDBAnot palindromeABDDBAABDDBApalindrome  ๐Ÿค” ๋ฌธ์ œ: ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด(palindrome substring) ์ฐพ๊ธฐBANANANA ๋ฌธ์ž์—ด์—์„œ ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์€ BANANANA ์ด๋‹ค.์ด๋ ‡๊ฒŒ ํŠน์ • ๋ฌธ์ž์—ด์—์„œ ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๊ตฌํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ๐Ÿ’ก ๊ธฐ์กด ํ’€์ด์•„๋งˆ ์ด ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๋ฉด ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ O(N^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ์งง๊ฒŒ ์ฃผ์–ด์งˆ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๋ƒ…๋‹ค ํ’€์–ด๋ณด์ž. (1) ํŒฐ๋ฆฐ๋“œ๋กฌ์˜ ์ค‘์‹ฌ ๋ฌธ์ž๋ถ€ํ„ฐ ํƒ์ƒ‰ํ™€์ˆ˜ ๊ธธ..

[heap] heapify(build heap)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

ํž™(heap) ํž™์€ ์•„๋ž˜ ์†์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(complete binary tree) ๊ธฐ๋ฐ˜ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค. ์ตœ๋Œ€ ํž™(max heap)์—์„œ ์ฃผ์–ด์ง„ ๋…ธ๋“œ C์— ๋Œ€ํ•ด P๊ฐ€ C์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋ผ๋ฉด P์˜ ํ‚ค(๊ฐ’)๋Š” C์˜ ํ‚ค๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ์ตœ์†Œ ํž™(min heap)์—์„œ๋Š” P์˜ ํ‚ค๊ฐ€ C์˜ ํ‚ค๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. Sift Up ์—ฐ์‚ฐ ํž™์— ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” sift up ์—ฐ์‚ฐ์ด ๋™์ž‘ํ•œ๋‹ค. ํ•ด๋‹น ์—ฐ์‚ฐ์€ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ๊ฐ’์œผ๋กœ ์‹œ์ž‘ํ•ด ๊ฐ’์„ ์œ„ ๋…ธ๋“œ์˜ ๊ฐ’๊ณผ ์—ฐ์†์ ์œผ๋กœ ๊ตํ™˜ํ•˜์—ฌ ๊ฐ’์„ ๋ฃจํŠธ๋ฅผ ํ–ฅํ•ด ๊ฒฝ๋กœ ์œ„๋กœ ์ด๋™ํ•œ๋‹ค. ์œ„(๋ถ€๋ชจ) ๋…ธ๋“œ์™€ ๋น„๊ตํ•ด ํŠธ๋ฆฌ์˜ ์†์„ฑ์„ ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€, ๋˜๋Š” ๋ฃจํŠธ ๋…ธ๋“œ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์—ฐ์‚ฐ์„ ๊ณ„์†ํ•œ๋‹ค. ์ตœ์†Œ ํž™์— ๋…ธ๋“œ(๊ฐ’ 18)๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณผ์ • ์œ„ ์˜์ƒ์—์„œ ์ƒˆ ๋…ธ๋“œ(๊ฐ’ 18)์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๋งŒ์กฑํ•˜๊ธฐ ..

[ZI9ZA9] ๊ฒฐ์ œ ์„ฑ๋Šฅ ๊ฐœ์„ ๊ธฐ

๐Ÿ”— github.com/wootecam-gugucon/shopping-mall ์šฐ๋ฆฌ ZI9ZA9(์ดํ•˜ ์ง€๊ตฌ์žฌ๊ตฌ) ์‡ผํ•‘๋ชฐ์—์„œ๋Š” ๋‹น์—ฐํžˆ ๊ฒฐ์ œ ๊ธฐ๋Šฅ์ด ์กด์žฌํ•œ๋‹ค. ์‹ค์ œ ์ถœ์‹œํ•  ์„œ๋น„์Šค๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ์ตœ๋Œ€ํ•œ ๋น„์Šทํ•œ ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์–ด ํ…Œ์ŠคํŠธ ํ‚ค๋กœ ํ† ์ŠคํŽ˜์ด๋จผ์ธ ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. (์ž์‚ฌ ํฌ์ธํŠธ ๊ฒฐ์ œ๋„ ์ œ๊ณตํ•˜์ง€๋งŒ ์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ์ƒ๋žตํ•˜๊ฒ ๋‹ค.) ๐Ÿ’ธ ๊ฒฐ์ œ ํ”Œ๋กœ์šฐ 1. ์ฃผ๋ฌธ์„œ ์ƒ์„ฑ ์›ํ•˜๋Š” ์˜๋ฅ˜๋ฅผ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ณ  ์ฃผ๋ฌธํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์„œ๋ฒ„์—์„œ ์ฃผ๋ฌธ ๋ฐ ์ฃผ๋ฌธ ์ƒํ’ˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ์•„์ง ์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ๋ฌธ์„ ์š”์ฒญ๋งŒ ํ–ˆ์œผ๋ฏ€๋กœ ์ฃผ๋ฌธ ์ƒํƒœ๋Š” CREATED, ๊ฒฐ์ œ ์ƒํƒœ๋Š” NONE ์ด๋‹ค. ํ”„๋ก ํŠธ์—์„œ๋Š” API ์‘๋‹ต์œผ๋กœ ๋ฐ›์€ ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ id๋กœ ์•„๋ž˜ ๊ฒฐ์ œํ•˜๊ธฐ ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. ๊ฒฐ์ œ ์ˆ˜๋‹จ ์ค‘ ์ผ๋ฐ˜ ๊ฒฐ์ œ๊ฐ€ ํ† ์ŠคํŽ˜์ด๋จผ์ธ  ๊ฒฐ์ œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 2. ๊ฒฐ์ œ ์š”์ฒญ..

[Floney] ์นดํ…Œ๊ณ ๋ฆฌ ๋ฆฌํŒฉํ† ๋ง ์ผ๋Œ€๊ธฐ

๐Ÿ€ ๊ธฐ์กด ์ƒํ™ฉ ๋„๋ฉ”์ธ ์šฐ๋ฆฌ ๊ฐ€๊ณ„๋ถ€์—์„œ ํ•˜๋‚˜์˜ ๊ฐ€๊ณ„๋ถ€ ๋‚ด์—ญ์€ ์ง€์ถœ/์ˆ˜์ž…/์ด์ฒด๋กœ ๊ตฌ๋ถ„๋˜๊ณ , ์ž์‚ฐ๊ณผ ๋ถ„๋ฅ˜ ํ•ญ๋ชฉ์œผ๋กœ ์„ธ๋ถ€์ ์œผ๋กœ ๋‹ค์‹œ ๊ตฌ๋ถ„๋œ๋‹ค. ์ด ์„ธ ๊ฐ€์ง€๋ฅผ ํŽธ์˜์ƒ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ํ†ต์นญํ•œ๋‹ค. ์ง€์ถœ/์ˆ˜์ž…/์ด์ฒด (์ดํ›„ ์ƒ์œ„ ์นดํ…Œ๊ณ ๋ฆฌ๋ผ ์นญํ•จ): ๊ฐ€๊ณ„๋ถ€ ๋‚ด์—ญ์˜ ์ข…๋ฅ˜ ๋ถ„๋ฅ˜ (์ดํ›„ ํ•˜์œ„ ์นดํ…Œ๊ณ ๋ฆฌ๋ผ ์นญํ•จ): ์œ„ ์ง€์ถœ/์ˆ˜์ž…/์ด์ฒด์˜ ํ•˜์œ„ ๋ถ„๋ฅ˜ (ex. ์‹๋น„, ์›”๊ธ‰ ๋“ฑ) ์ž์‚ฐ (์ดํ›„ ํ•˜์œ„ ์ž์‚ฐ ์นดํ…Œ๊ณ ๋ฆฌ๋ผ ์นญํ•จ): ๊ฐ€๊ณ„๋ถ€ ๋‚ด์—ญ์˜ ์ž์‚ฐ ์ถœ์ฒ˜ (ex. ํ˜„๊ธˆ, ์นด๋“œ ๋“ฑ) ์ด๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ด ์นดํ…Œ๊ณ ๋ฆฌ๋“ค์€ ๊ฐ€๊ณ„๋ถ€ ๋ณ„๋กœ ๊ด€๋ฆฌ๋œ๋‹ค. ์ด ๋•Œ ํ•˜์œ„ ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ๊ฐ€๊ณ„๋ถ€ ์ƒ์„ฑ ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ N๊ฐœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด๋ฅผ ๊ธฐ๋ณธ ์นดํ…Œ๊ณ ๋ฆฌ๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ๋‹ค. ๊ธฐ๋ณธ ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜๋กœ ์‚ญ์ œ ๋ฐ ์ˆ˜์ •์„ ํ•  ์ˆ˜ ์—†๋‹ค. ์œ„ ํ™”๋ฉด์— ๋ณด์ด๋Š” ์ž์‚ฐ์˜ ํ˜„๊ธˆ..

[Unicode] Unicode์˜ Code Point์™€ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด

๋ฌธ์ œ utf8mb4์„ ์‚ฌ์šฉํ•˜๋Š” MySQL์—์„œ ํ•œ ํ…Œ์ด๋ธ”์— ์ž๋ฃŒํ˜•์ด varchar(1)์ธ 'name' ์ปฌ๋Ÿผ์ด ์žˆ๋‹ค. ๊ทธ ํ…Œ์ด๋ธ”์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ฒฐ๊ณผ๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? insert into test(name) values('โœ…'); insert into test(name) values('๐Ÿ‡ฐ๐Ÿ‡ท'); ์ •๋‹ต ์ฒซ๋ฒˆ์งธ ์ฟผ๋ฆฌ๋Š” ์„ฑ๊ณตํ•˜๊ณ , ๋‘๋ฒˆ์งธ ์ฟผ๋ฆฌ๋Š” "Data too long for column name 'name'"์œผ๋กœ ์‹คํŒจํ•œ๋‹ค. ๊ฐ™์€ ์ด๋ชจํ‹ฐ์ฝ˜์ด๊ณ  varchar ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ–ˆ์Œ์—๋„ ์™œ ๋‹ค๋ฅธ ๊ธธ์ด๋กœ ์ธ์‹๋œ ๊ฑธ๊นŒ? Unicode (์œ ๋‹ˆ์ฝ”๋“œ) ์œ ๋‹ˆ์ฝ”๋“œ(The Unicode Standard)๋Š” ์ „ ์„ธ๊ณ„์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ปดํ“จํ„ฐ์—์„œ ์ผ๊ด€๋˜๊ฒŒ ํ‘œํ˜„ํ•˜๊ณ  ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์‚ฐ์—… ํ‘œ์ค€์ด๋‹ค. ํ•œ๊ธ€, ํ•œ์ž, ์˜์–ด ๋“ฑ์˜..

etc 2024.01.11

[2023๋…„ ํ•˜๋ฐ˜๊ธฐ] preschooler ๊ฐœ๋ฐœ์ž์˜ 6๊ฐœ์›”

junior ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋Š” ๊ทธ ๋‚ ๊นŒ์ง€... ๐Ÿคฌ๐Ÿ˜ข ์šฐ์•„ํ•œํ…Œํฌ์บ ํ”„ ๋‘ ๋‹ฌ์งœ๋ฆฌ ์งง์€ ๊ณผ์ •์ด์—ˆ์ง€๋งŒ ๋๋‚œ ์ดํ›„ ๋ฐ˜ ๋…„์ด ์ง€๋‚œ ์ง€๊ธˆ๊นŒ์ง€๋„ ๋งŽ์€ ์˜ํ–ฅ์„ ์ฃผ๊ณ  ์žˆ๋‹ค. (๋ฐฐ๋ฏผ ์•ฑ ์‚ญ์ œ... ๋ผ๋˜๊ฐ€? ใ…‹) ์บ ํ”„์— ์ง€์›ํ•˜๋ฉด์„œ ๊ฐ€์กŒ๋˜ ๋ชฉํ‘œ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€์˜€๋‹ค. ๊ฐœ๋ฐœ์— ์—ด์ •์ ์ธ ๋™๋ฃŒ๋“ค์„ ์–ป๋Š” ๊ฒƒ์ด ์ฒซ๋ฒˆ์งธ์˜€๊ณ , ์šฐ๋ฌผ ๋ฐ– ๊ฐœ๊ตฌ๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฒŒ ๋‘๋ฒˆ์งธ์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‘ ๋‹ค ์ด๋ฃจ์—ˆ๋‹ค. TDD, OOP, MySQL, JPA ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ๋Œ€ํ•ด ์ ‘ํ•˜๊ณ  ๊ธฐ์ˆ ์ ์œผ๋กœ ํฌ๊ฒŒ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์บ ํ”„ ์ „๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ ์šฐ๋ฌผ ๋ฐ– ๊ฐœ๊ตฌ๋ฆฌ๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ํ™•์‹คํ•˜๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ํฐ ์—…์ (?)์€ ์—ด์ •์ ์ธ ๋™๊ธฐ๋“ค์„ ์–ป์€ ๊ฒƒ์ด๋‹ค. ํ•˜๋ฃจ 12์‹œ๊ฐ„ ๋™์•ˆ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ๋„ ๋ฐฅ ๋จน์„ ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ์— ๋Œ€ํ•ด ํ† ๋ก ํ•˜๋Š” ๋™๊ธฐ๋“ค์„ ๋ณด๋ฉฐ ๊ฐ€๋”์€ ์ฒดํ•  ๊ฒƒ ๊ฐ™์•˜์ง€๋งŒ ใ…Žใ…Ž ..

[Floney] ์ž์‚ฐ ๋ฐ์ดํ„ฐ ๋™์‹œ์„ฑ ์ด์Šˆ ํ•ด๊ฒฐ ์‚ฝ์งˆ๊ธฐ

๐Ÿ€ https://github.com/Floney-2023 ์šฐ๋ฆฌ ๊ฐ€๊ณ„๋ถ€์—์„œ ์ž์‚ฐ์€ ๊ฐ€๊ณ„๋ถ€ ๋‚ด์—ญ ์ค‘ ์ง€์ถœ(-)๊ณผ ์ˆ˜์ž…(+)์˜ ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ์ž์‚ฐ์ด๋ผ๋Š” ๊ฐœ๋…์€ ์„ค๊ณ„ ๊ณผ์ •๋ถ€ํ„ฐ ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋Š”๋ฐ, ํ•˜๋‚˜์˜ ์ง€์ถœ ํ˜น์€ ์ˆ˜์ž…์ด ์ƒ๊ธฐ๋ฉด ๊ทธ์— ๋”ฐ๋ผ ํ•ด๋‹น ๋‚ด์—ญ ๋‚ ์งœ ์ดํ›„๋กœ ๋งค ๋‹ฌ์˜ ์ง€์ถœ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐฑ์‹ ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹ค๋ฅธ ๊ฐ€๊ณ„๋ถ€ ์„œ๋น„์Šค๋ฅผ ์ฐธ๊ณ ํ•ด ์ž์‚ฐ์ด ๊ฐฑ์‹ ๋˜๋Š” ํŠน์ • ๊ธฐ๊ฐ„(5๋…„)์„ ์ •ํ•ด์„œ ๊ฐ€๊ณ„๋ถ€ ๋‚ด์—ญ ๋ณ€๊ฒฝ ์‹œ ๋งค ๋ฒˆ 60๊ฐœ(5๋…„ * 12๋‹ฌ)์˜ ์ž์‚ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐฑ์‹ ๋˜๋„๋ก ์ •ํ•˜๋ฉด์„œ ์ด ๋ฌธ์ œ๋Š” ๋งˆ๋ฌด๋ฆฌ๋˜์—ˆ๋‹ค. ๋ฌธ์ œ ๋ฐœ์ƒ - ์˜๋„๋˜์ง€ ์•Š์€ ์ž์‚ฐ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ์ƒ์„ฑ ์•ฑ์ด ์ถœ์‹œ๋œ ํ›„, ๊ฐ€๊ณ„๋ถ€ ๋‚ด์—ญ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ณผ์ • ์ค‘ ์ž์‚ฐ ์‚ญ์ œ ๋ฉ”์„œ๋“œ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. NonUniqueResultException์œผ๋กœ ํ•˜๋‚˜์˜ ์ž์‚ฐ ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒ..

[OOP] 'The Single Responsibility Principle' by Robert C. Martin ๋ฒˆ์—ญ

์›๊ธ€: https://blog.cleancoder.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html ๐Ÿ“Œ ๋ฒˆ์—ญ์ด ํ‹€๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž์˜์ ์œผ๋กœ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์—ฌ๊ฒจ์ง€๋Š” ๋ถ€๋ถ„์€ ์ œ์™ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ๋ฌธ 1972๋…„, David L. Parnas๋Š” ๋…ผ๋ฌธ์„ ์ถœ๊ฐ„ํ–ˆ๋‹ค. ๋…ผ๋ฌธ์˜ ๋งˆ์ง€๋ง‰์—์„œ ๊ทธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฐ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ”Œ๋กœ์šฐ์ฐจํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ์Šคํ…œ์„ ๋ชจ๋“ˆ๋กœ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ž˜๋ชป๋˜์—ˆ๋‹ค๊ณ  ์ฃผ์žฅํ•ด์™”๋‹ค. ๋Œ€์‹  ์–ด๋ ต๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์„ค๊ณ„ ๊ฒฐ์ • ๋ชฉ๋ก์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•œ๋‹ค. ๊ฐ ๋ชจ๋“ˆ์€ ๋‹ค๋ฅธ ๋ชจ๋“ˆ๋กœ๋ถ€ํ„ฐ ๊ทธ๋Ÿฌํ•œ ๊ฒฐ์ •์„ ์ˆจ๊ธฐ๋„๋ก ์„ค๊ณ„๋˜์–ด์•ผ ํ•œ๋‹ค. ๋‚˜๋Š” ๋งˆ์ง€๋ง‰ ๋‘ ๋ฌธ์žฅ์— ํŠนํžˆ ๊ณต๊ฐํ•œ๋‹ค. Parnas๋Š” ๋ชจ๋“ˆ์ด ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•œ๋‹ค..

[Spring Data JPA] jpa.generate-ddl๊ณผ jpa.hibernate.ddl-auto ํ”„๋กœํผํ‹ฐ

์ฐธ๊ณ  https://docs.spring.io/spring-boot/docs/2.0.6.RELEASE/reference/html/howto-database-initialization.html https://docs.jboss.org/hibernate/orm/5.0/manual/en-US/html/ch03.html JPA๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™” JPA์—๋Š” DDL ์ƒ์„ฑ ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉฐ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์‹œ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๋‹ค๋ฃจ๋Š” ๋‘ ๊ฐ€์ง€ ์†์„ฑ์ด spring.jpa.generate-ddl๊ณผ spring.jpa.hibernate.ddl-auto ์ด๋‹ค. HBM2DDL_AUTO ํ”„๋กœํผํ‹ฐ ์œ„ ๋‘ ํ”„๋กœํผํ‹ฐ๋Š” Hibernate์˜ HBM2DDL_AUTO ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๊ฒฐ์ •ํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด HBM2..

[Spring Boot] @SpringBootTest๋ฅผ ์‚ฌ์šฉํ•œ ํ…Œ์ŠคํŠธ์˜ ๊ฒฉ๋ฆฌ

์ด์ „ ๋ฐฉ์‹: @DirtiesContext๋ฅผ ํ†ตํ•œ ๊ฒฉ๋ฆฌ https://github.com/wootecam-gugucon/shopping-mall ํ”„๋กœ์ ํŠธ์—์„œ @SpringBootTest๋กœ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ @DirtiesContext๋ฅผ ์‚ฌ์šฉํ•ด ํ…Œ์ŠคํŠธ ๊ฐ„ ๊ฒฉ๋ฆฌ๋ฅผ ์‹œ์ผฐ๋‹ค. @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class IntegrationTest { // ๊ธฐํƒ€ ์„ค์ • } https://docs.spring.io/spring-framework/referenc..