์ „์ฒด ๊ธ€

๐Ÿ“‚๋ฐฑ์—”๋“œ : BackEnd

MVC Pattern, Session, Cookie

JSP๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” Web Application Architecture๋Š” ํฌ๊ฒŒ model1๊ณผ model2 ๋กœ ๋‚˜๋‰œ๋‹ค. Model1 : client์˜ ์š”์ฒญ์— ๋Œ€ํ•œ Logic์ฒ˜๋ฆฌ์™€ response page(view)์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋ชจ๋‘ ํ•จ Model2 : ํ™”๋ฉด์— ๋ณด์ด๋Š” ๋ถ€๋ถ„๋งŒ ์ฒ˜๋ฆฌ (= MVCํŒจํ„ด์„ ์›น ๊ฐœ๋ฐœ์— ๋„์ž…ํ•œ ๊ตฌ์กฐ ) Model1 view์™€ logic์„ JSPํŽ˜์ด์ง€ ํ•˜๋‚˜์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ ์žฅ์  ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ์ง๊ด€์ , ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๋‹ค ๊ฐœ๋ฐœ ์‹œ๊ฐ„์ด ๋น„๊ต์  ์งง๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ๋น„์šฉ์ด ๊ฐ์†Œ ๋‹จ์  view์ฝ”๋“œ์™€ ๋กœ์ง์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ java์ฝ”๋“œ๊ฐ€ ์„ž์—ฌ ์žˆ์–ด์„œ JSP์ฝ”๋“œ ์ž์ฒด๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค JSP์ฝ”๋“œ์— BE์™€ FE๊ฐ€ ํ˜ผ์žฌ๋˜์–ด ๋ถ„์—…์ด ํž˜๋“ค์–ด์ง ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ ธ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›€ ํ™•์žฅ..

๐Ÿ“‚๋ฐฑ์—”๋“œ : BackEnd

[JSP]

JSP(Java Server Page) HTML๋‚ด์— ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ์›น ์„œ๋ฒ„์—์„œ ๋™์ ์œผ๋กœ ์›น ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋Œ๋ ค์ฃผ๋Š” ์–ธ์–ด ์‹คํ–‰ ์‹œ servlet์œผ๋กœ ๋ณ€ํ™˜๋œ ํ›„ ์‹คํ–‰ ๋จ (์ตœ์ดˆ ํ•œ ๋ฒˆ + JSP์ˆ˜์ • ์‹œ) ๋ณ€ํ™˜์€ WAS๊ฐ€ ํ•ด์ค€๋‹ค. JSP๊ฐ€ ๋น ๋ฅผ๊นŒ Servlet์ด ๋น ๋ฅผ๊นŒ? JSP๋Š” Servlet์œผ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ณผ์ •์ด ์žˆ๊ธด ํ•˜์ง€๋งŒ, ์ตœ์ดˆ ํ•œ ๋ฒˆ๊ณผ ์ˆ˜์ • ์‹œ์—๋งŒ ๋ณ€ํ™˜๋œ๋‹ค. JSP์—์„œ GET๊ณผ POST๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ• request.getMethod() JSP ๋ฌธ๋ฒ• ์„ ์–ธ๋ฌธ ๋ฉค๋ฒ„๋ณ€์ˆ˜ ์„ ์–ธ์ด๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ•˜๋Š” ์˜์—ญ ์„ ์–ธ๋ฌธ ์•ˆ์— System.out.println("A"); ๊ณผ ๊ฐ™์€ ๋ช…๋ น์„ ๋„ฃ์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ฒ˜๋ฆฌ๋ฌธ - ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์‹œ ๋งค๋ฒˆ ํ˜ธ์ถœ๋˜๋Š” ์˜์—ญ. - Servlet์œผ๋กœ ๋ณ€ํ™˜ ์‹œ se..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ (๋ฐฑ์ค€ 5639๋ฒˆ)

์ „์œ„์ˆœํšŒ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ , ํ›„์œ„์ˆœํšŒ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ํ’€์ด ์ˆœ์„œ 1. ์ž…๋ ฅ์„ ๋ฐ”ํƒ•์œผ๋กœ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑ. (๋…ธ๋“œ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉ) 2. ๋…ธ๋“œ ํด๋ž˜์Šค ๋‚ด๋ถ€์— insert ํ•จ์ˆ˜ ์ž‘์„ฑ. insert ํ•จ์ˆ˜ : ์ž…๋ ฅ๋œ ๋…ธ๋“œ์˜ ๊ฐ’์„ ํ˜„์žฌ ๋…ธ๋“œ ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ, ์™ผ์ชฝ ํ˜น์€ ์˜ค๋ฅธ์ชฝ์— ๋‹ฌ์•„์ฃผ๋Š” ํ•จ์ˆ˜. ์ด๋•Œ insert ํ•จ์ˆ˜์— ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค. ํ•ด๋‹น ์œ„์น˜๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด ํ•ด๋‹น ์œ„์น˜์— ๋…ธ๋“œ๋ฅผ ๋‹ฌ์•„์ฃผ๊ณ , ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ํ•ด๋‹น ์œ„์น˜์— ์žˆ๋Š” ๋…ธ๋“œ์˜ insertํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€ํ˜ธ์ถœ ์ฝ”๋“œ package com.mincheolsong; import java.io.*; import java.util.*; public class Main { // BOJ 5639๋ฒˆ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ static class Node{ int num; N..

๐Ÿ“‚๋ฐฑ์—”๋“œ : 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๋ฉ”์†Œ๋“œ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ ์›น์—์„œ ..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

๋‹ค์ต์ŠคํŠธ๋ผ (๋ฐฑ์ค€ 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 ..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ (๋ฐฑ์ค€ 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์—์„œ ๊ฑฐ..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

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

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

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

๋ฐฑ์ค€ 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..

mc.thd
song