๐๋ฐฑ์๋ : Backend
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
๋ค์ต์คํธ๋ผ๋ก ํ ์ ์๋ ๋ฌธ์ ์ํฉ ํ ์ง์ ์์ ๋ค๋ฅธ ํ ์ง์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก ํ ์ง์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ง์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก ๋ชจ๋ ์ง์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ง์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก ํด๋น ๋ฌธ์ ๋ ํ ์ง์ ์์ ๋ค๋ฅธ ํ ์ง์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํด์ผ ํ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ๋ฅผ ๊ทธ๋ํ๋ก ๋ฐ๊พธ๋๊ฒ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค. ์๋น์ด๋ ์์น 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
ํธ๋ฆฌ์ ์ง๋ฆ์ด๋ ํธ๋ฆฌ์์ ์์์ ๋ ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ ์ค ๊ฐ์ฅ ๊ธด ๊ฒ์ด๋ค. ๊ฒฐ๋ก ์์์ ์ ์ ์์ ๊ฐ์ฅ ๊ฑฐ๋ฆฌ๊ฐ ๊ธด ๋
ธ๋๋ฅผ ์ฐพ๋๋ค. (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
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ํจ์ ์ผ๋ถ๋ถ์
๋๋ค 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
ํ๋ก์ ํธ๋ฅผ ํ๋ ์ค, ์ ๋๋ 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
์ปฌ๋ ์
ํ์
๊ฒฐ๊ณผ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ๋น ์ปฌ๋ ์
์ ๋ฐํํด์ค๋ค. (null์ ๋ฐํํ์ง ์์!) ๋ฐ๋ผ์ !=null ๊ณผ ๊ฐ์ ์ฒ๋ฆฌ๋ฅผ ํด์ค ํ์๊ฐ ์๋ค. ๋จ๊ฑด ์กฐํ ๊ฒฐ๊ณผ๊ฐ์ด ์๋ ๊ฒฝ์ฐ null์ ๋ฐํํ๋ค (์์ํ jpa์ ๊ฒฝ์ฐ javax.persistence.NoResultException ์์ธ ๋ฐ์) ๊ฒฐ๊ณผ๊ฐ 2๊ฑด ์ด์์ธ ๊ฒฝ์ฐ javax.persistence.NonUniqueResultException ์์ธ ๋ฐ์