์ „์ฒด ๊ธ€

๐Ÿ’Ž๋ฐฑ์—”๋“œ : Backend

[Servlet]

1. WebArchitecture page ์ด๋™๋ฐฉ๋ฒ• url ์ž…๋ ฅ (get๋ฐฉ์‹) link (get๋ฐฉ์‹) form (get๋ฐฉ์‹) get (get๋ฐฉ์‹) post ์ฆ‰ form์— post๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋‘ GET ๋ฐฉ์‹์ด๋‹ค. Persistence Login = ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋กœ์ง 2. Servlet Servlet = Java + HTML ์ž๋ฐ”์—์„œ ๋ฐฑ์•ค๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” api ๋‘ ๊ฐ€์ง€ servlet → ์ž๋ฐ”์•ˆ์— html์ด ํฌํ•จ jsp → html ์•ˆ์— ์ž๋ฐ”๊ฐ€ ํฌํ•จ ์ฒ˜์Œ์— servlet์ด ๋จผ์ € ๋‚˜์˜ด → ์Œ๋”ฐ์˜ดํ‘œ ์•ˆ์— html์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋„ฃ๋Š”๊ฒŒ ๋„ˆ๋ฌด ํž˜๋“ค์–ด → html์— ์ž๋ฐ” ๋„ฃ์œผ๋ฉด ์–ด๋–จ๊นŒ? → jsp ๋“ฑ์žฅ ์™ธํ˜• ์ž์ฒด๊ฐ€ .java ์„œ๋ธ”๋ฆฟ ํŒŒ์ผ์—์„œ ์ƒ์„ฑ์ž ์•ˆ ๋งŒ๋“ค์–ด๋„ ๋จ → init๋ฉ”์†Œ๋“œ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ ์›น์—์„œ ..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

๋‹ค์ต์ŠคํŠธ๋ผ (๋ฐฑ์ค€ 13549 ์ˆจ๋ฐ”๊ผญ์งˆ 3)

๋‹ค์ต์ŠคํŠธ๋ผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ƒํ™ฉ ํ•œ ์ง€์ ์—์„œ ๋‹ค๋ฅธ ํ•œ ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ํ•œ ์ง€์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ชจ๋“  ์ง€์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ํ•ด๋‹น ๋ฌธ์ œ๋Š” ํ•œ ์ง€์ ์—์„œ ๋‹ค๋ฅธ ํ•œ ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ๋ฐ”๊พธ๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ์œ„์น˜ X์—์„œ -1, +1, *2 ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ ์œ„์น˜ X๋ฅผ ๋…ธ๋“œ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์„ ๋•Œ X-1, X+1, X*2 ๋ฅผ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ, ๊ฐ€์ค‘์น˜๋Š” ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ (1, 1, 0) ์œผ๋กœ ์ƒ๊ฐํ–ˆ๋‹ค. ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (์šฐ์„ ์ˆœ์œ„ํ ํ™œ์šฉ) ์ฝ”๋“œ package com.mincheolsong; import java.io.*; import java.util.*; public class Main { // boj 13549 ..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ (๋ฐฑ์ค€ 1167๋ฒˆ)

ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„์ด๋ž€ ํŠธ๋ฆฌ์—์„œ ์ž„์˜์˜ ๋‘ ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์ด๋‹ค. ๊ฒฐ๋ก  ์ž„์˜์˜ ์ •์ ์—์„œ ๊ฐ€์žฅ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ธด ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค. (dfs ํ•œ ๋ฒˆ) ์ฐพ์•„์ง„ ๋…ธ๋“œ์—์„œ ๊ฐ€์žฅ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ธด ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค. (dfsํ•œ ๋ฒˆ) (์ด dfs ๋‘ ๋ฒˆ์— ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค) ์„ค๋ช… ์œ„ ํŠธ๋ฆฌ์˜ ๊ฒฝ์šฐ 1 - 3 - 4 - 5 ๊ฐ€ ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„(ํŠธ๋ฆฌ์—์„œ ์ž„์˜์˜ ๋‘ ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ) ๊ฒฝ๋กœ๊ฐ€ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„์ด ๋˜๋Š” ์–‘ ๋ ๋…ธ๋“œ๋Š” 1๊ณผ 5์ด๋‹ค. ์ด ๋•Œ ์ž„์˜์˜ ์ •์ ์—์„œ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๊ธด ๋…ธ๋“œ๋Š” 1 ํ˜น์€ 5๋ฅผ ๋ฐ˜๋“œ์‹œ ์ง€๋‚˜๊ฒŒ ๋œ๋‹ค. 1์—์„œ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๊ธด ๊ฒฝ๋กœ : 1 - 3 - 4 - 5 2์—์„œ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๊ธด ๊ฒฝ๋กœ : 2 - 4 - 5 3์—์„œ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๊ธด ๊ฒฝ๋กœ : 3 - 4 - 5 4์—์„œ ๊ฑฐ..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชจ๋“  ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๋ชจ๋‘ ๊ณ„์‚ฐํ•จ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹จ๊ณ„๋ณ„๋กœ ๊ฑฐ์ณ ๊ฐ€๋Š” ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜ํ–‰ ๋‹ค์ต์ŠคํŠธ๋ผ์™€ ๋‹ค๋ฅด๊ฒŒ ๋งค ๋‹จ๊ณ„๋งˆ๋‹ค ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ ์ค‘์— ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ–๋Š” ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์Œ. 2์ฐจ์› ํ…Œ์ด๋ธ”์— ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์ •๋ณด๋ฅผ ์ €์žฅ DP ์œ ํ˜•์— ์†ํ•จ (์ ํ™”์‹์— ๋งž๊ฒŒ 3์ค‘ FOR๋ฌธ์„ ์ด์šฉํ•ด์„œ 2์ฐจ์› ํ…Œ์ด๋ธ”์„ ๊ฐฑ์‹ ) ๋…ธ๋“œ์˜ ๊ณ„์ˆ˜๊ฐ€ ๋ฐ€์ง‘๊ทธ๋ž˜ํ”„(์™„์ „๊ทธ๋ž˜ํ”„์— ๊ฐ€๊นŒ์šด ๊ทธ๋ž˜ํ”„)์ธ ๊ฒฝ์šฐ ํ”Œ๋กœ์ด๋“œ ์›Œ์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํšจ์œจ์ ์ด๋‹ค. ๋ฐ€์ง‘๊ทธ๋ž˜ํ”„๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ n๋ฒˆ ๋Œ๋ฆฌ๋Š”๊ฒŒ ๋น ๋ฅด๋‹ค O(n^3)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ๋‹ค์ต์ŠคํŠธ๋ผ(์ธ์ ‘ํ–‰๋ ฌ์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ)์˜ ์‹œ๊ฐ„๋ณต์žก๋„์™€ ๋™์ผํ•˜๋‹ค N์ด 100์ด๋ฉด → 100๋งŒ์ด์–ด์„œ ๊ฐ€๋Šฅ, 500์ด์–ด๋„ → 1์–ต 2์ฒœ 500๋งŒ ์ด์–ด์„œ tryํ•ด๋ณผ ..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

๋ฐฑ์ค€ 9465 ์Šคํ‹ฐ์ปค

dp๋กœ ํ‘ธ๋Š” ๋ฌธ์ œ. ์•Œ๊ฒŒ๋œ ์  ์ ํ™”์‹์„ ์„ธ์šธ ๋•Œ arr[r][c]๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ์™€ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋งŒ ์ƒ๊ฐํ•˜์ง€ ๋ง์ž ์ด๋ฒˆ ๋ฌธ์ œ๋Š” arr[r][c]๋ฅผ ๋ฝ‘์„ ์ˆ˜ ์žˆ๋Š” ์ด์ „ ์œ„์น˜๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ–ˆ๋‹ค! dp๋Š” ์ตœ์ ํ•ด์˜ ๋ถ€๋ถ„์ตœ์ ํ•ด๋ฅผ ์ƒ๊ฐํ•˜๋ฉฐ ์ ํ™”์‹์„ ์„ธ์›Œ์•ผ ํ•œ๋‹ค. ์ฒ˜์Œ ์ ‘๊ทผ๋ฐฉ์‹ arr[r][c] ์˜ ์Šคํ‹ฐ์ปค๋ฅผ ๋–ผ๋Š” ๊ฒฝ์šฐ์™€ ๋–ผ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด์„œ ์ ํ™”์‹์„ ์„ธ์šฐ๋ ค๊ณ  ํ–ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ๋ฐฉ์‹ arr[r][c]์˜ ์Šคํ‹ฐ์ปค๋ฅผ ๋—„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋งŒ ๊ณ ๋ คํ•˜๊ณ , arr[r][c] ์Šคํ‹ฐ์ปค๋ฅผ ๋—„ ์ˆ˜ ์žˆ๋Š” ์ด์ „ ์œ„์น˜ (arr[1][c-1] or arr[1][c-2] ํ˜น์€ arr[0][c-1] or arr[0][c-2]) ๋ฅผ ๋ถ€๋ถ„์ตœ์ ํ•ด๋กœ ๋ณด๋Š” ๊ฒƒ ์ด์—ˆ๋‹ค. ์ ํ™”์‹ r=0์ธ ๊ฒฝ์šฐ dp[r][c] = max{dp[1][c-1], dp[1][c..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

bfs ๋ฐฉ๋ฌธ์ฒดํฌ ์œ„์น˜

๋ฐฑ์ค€ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๋ฅผ ๋งŒ๋‚จ.. ๋ถ„๋ช… ๋‹ค๋ฅธ์‚ฌ๋žŒ ์ฝ”๋“œ์™€ ๊ฐ™์€๋ฐ, ์™œ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋‚˜๋Š”์ง€ ์ด์ƒํ–ˆ๋‹ค. ์ด์œ ๋Š” bfs ๋ฐฉ๋ฌธ์ฒดํฌ ์œ„์น˜๋ฅผ ์ž˜ ๋ชป ํ•ด์„œ ๊ฒฐ๋ก  : ํ์— ์‚ฝ์ž…ํ•˜๋Š” ์ˆœ๊ฐ„์— ๋ฐฉ๋ฌธ์ฒดํ‚น์„ ํ•ด์„œ ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•˜์ž ์ž˜๋ชป๋œ ๋ฐฉ๋ฌธ์ฒดํฌ ์œ„์น˜ (ํ๋ฅผ ๋ฝ‘๋Š” ์ˆœ๊ฐ„ ๋ฐฉ๋ฌธ์ฒดํฌ) ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋ฌธ์ œ์— ์‚ฌ์šฉ๋œ bfsํ•จ์ˆ˜ ์ผ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค static boolean move(){ Queue tmp = new LinkedList(); while(!bq.isEmpty()){ int[] c = bq.poll(); int cr = c[0], cc=c[1]; if(cr==er && cc == ec){ return true; } chk[c[0]][c[1]]=true; // ๋ฐฉ๋ฌธ์ฒดํฌ for(int d=0;d

๐Ÿ’Ž๋ฐฑ์—”๋“œ : Backend

[SpringBoot ํ•˜๋ฉฐ ๋งˆ์ฃผ์นœ ์˜ค๋ฅ˜] Transaction silently rolled back because it has been marked as rollback-only

ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋˜ ์ค‘, ์ž˜ ๋˜๋˜ api์—์„œ Transaction silently rolled back because it has been marked as rollback-only ๋ผ๋Š” ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋ฉฐ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜์˜€์Šต๋‹ˆ๋‹ค. 1. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ๋ฌด์„ฑ์˜ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ง์ž 1-1) ์˜ˆ์™ธ ๋ธ”๋ž™ํ™€์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์˜ˆ์™ธ๋ฅผ ํก์ˆ˜ํ•ด๋ฒ„๋ฆฌ๊ณ  ๋‹ค์Œ ๋กœ์ง์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค. try{ }catch(IOException e){ // ์˜ˆ์™ธ ๋ธ”๋ž™ํ™€ } ์œ„ ์ฝ”๋“œ์—์„œ IOException์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ๋ฅผ try/catch๋กœ ๊ฐ์‹ธ๋ฉด ๋‹ค์Œ ๋กœ์ง์ด ์ •์ƒ ์ˆ˜ํ–‰๋œ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์ด ์ •์ƒ ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค๊ณ  ์ฐฉ๊ฐํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฒ„๊ทธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 1-2) ๋ฌด์„ฑ์˜ํ•œ throws๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์œ„ ๋ฉ”์†Œ๋“œ..

๐Ÿ’พORM:JPA

[spring-data-jpa] ๋ฐ˜ํ™˜ํƒ€์ž…

์ปฌ๋ ‰์…˜ ํƒ€์ž… ๊ฒฐ๊ณผ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ์ปฌ๋ ‰์…˜์„ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค. (null์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Œ!) ๋”ฐ๋ผ์„œ !=null ๊ณผ ๊ฐ™์€ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋‹จ๊ฑด ์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค (์ˆœ์ˆ˜ํ•œ jpa์˜ ๊ฒฝ์šฐ javax.persistence.NoResultException ์˜ˆ์™ธ ๋ฐœ์ƒ) ๊ฒฐ๊ณผ๊ฐ€ 2๊ฑด ์ด์ƒ์ธ ๊ฒฝ์šฐ javax.persistence.NonUniqueResultException ์˜ˆ์™ธ ๋ฐœ์ƒ

mc.thd
mincheolsong