๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋๋ณด๊ธฐ [Gold IV] ๊ฑฐ์ง๋ง - 1043 ๋ฌธ์ ๋งํฌ ์ฑ๋ฅ ์์ฝ ๋ฉ๋ชจ๋ฆฌ: 14352 KB, ์๊ฐ: 128 ms ๋ถ๋ฅ ์๋ฃ ๊ตฌ์กฐ, ๋ถ๋ฆฌ ์งํฉ, ๊ทธ๋ํ ์ด๋ก , ๊ทธ๋ํ ํ์ ์ ์ถ ์ผ์ 2024๋
1์ 3์ผ 16:32:22 ๋ฌธ์ ์ค๋ช
์ง๋ฏผ์ด๋ ํํฐ์ ๊ฐ์ ์ด์ผ๊ธฐ ํ๋ ๊ฒ์ ์ข์ํ๋ค. ํํฐ์ ๊ฐ ๋๋ง๋ค, ์ง๋ฏผ์ด๋ ์ง๋ฏผ์ด๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ์ด์ผ๊ธฐ๋ฅผ ํ๋ค. ์ง๋ฏผ์ด๋ ๊ทธ ์ด์ผ๊ธฐ๋ฅผ ๋งํ ๋, ์๋ ๊ทธ๋๋ก ์ง์ค๋ก ๋งํ๊ฑฐ๋ ์์ฒญ๋๊ฒ ๊ณผ์ฅํด์ ๋งํ๋ค. ๋น์ฐํ ๊ณผ์ฅํด์ ์ด์ผ๊ธฐํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ฌ๋ฏธ์๊ธฐ ๋๋ฌธ์, ๋๋๋ก์ด๋ฉด ๊ณผ์ฅํด์ ์ด์ผ๊ธฐํ๋ ค๊ณ ํ๋ค. ํ์ง๋ง, ์ง๋ฏผ์ด๋ ๊ฑฐ์ง๋ง์์ด๋ก ์๋ ค์ง๊ธฐ๋ ์ซ์ดํ๋ค. ๋ฌธ์ ๋ ๋ช๋ช ์ฌ๋๋ค์ ๊ทธ ์ด์ผ๊ธฐ์ ์ง์ค์ ์๋ค๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ์ฌ๋๋ค์ด ํํฐ์ ์์ ๋๋, ์ง๋ฏผ์ด๋ ์ง์ค์ ์ด์ผ๊ธฐํ ์ ..
๐๋ฐฑ์๋ : Backend
๐กํํฐ, ์ธํฐ์
ํฐ, AOP์ ์ฐจ์ด? ํํฐ - ์คํ๋ง ์ปจํ
์คํธ ์ธ๋ถ์ ์กด์ฌํ์ฌ ์คํ๋ง๊ณผ ๋ฌด๊ดํ ์์์ ๋ํด ๋์ํจ. - ๋ณดํต web.xml์ ๋ฑ๋กํ๊ณ , ์ธ์ฝ๋ฉ ๋ณํ ์ฒ๋ฆฌ, XSS ๋ฐฉ์ด ๋ฑ์ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ก ์ฌ์ฉ๋จ. ์ธํฐ์
ํฐ - ์คํ๋ง ์ปจํ
์คํธ ๋ด๋ถ์ ์กด์ฌํ๋ฉฐ Dispatcher Servlet์ด ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ๊ธฐ ์ , ํ๋ก ๋ผ์ด๋ฌ. - ์คํ๋ง์ ๋ชจ๋ ๋น ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์์. ์ฌ๋ฌ๊ฐ๋ฅผ ์ฌ์ฉํ ์ ์์(์์ ์ฃผ์). - ๋ก๊ทธ์ธ ์ฒดํฌ, ๊ถํ์ฒดํฌ, ํ๋ก๊ทธ๋จ ์คํ์๊ฐ ๊ณ์ฐ์์
๋ก๊ทธํ์ธ ๋ฑ์ ์
๋ฌด์ฒ๋ฆฌ. AOP - ํํฐ์ ์ธํฐ์
ํฐ (ํํฐ์ ์ธํฐ์
ํฐ๋ Servlet ๋จ์์์ ์คํ) ์ ๋ค๋ฅด๊ฒ ๋ฉ์๋ ์์์ Proxy ํจํด์ ํํ๋ก ์คํ๋จ. - OOP๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋์จ ๊ฐ๋
. (OOP์์ ๊ณตํต ์ฌํญ์ ๋ชจ๋ํ ํ..
๐๋ฐฑ์๋ : Backend
๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ (AOP) ํต์ฌ ๊ด์ฌ ์ฌํญ(core concern)๊ณผ ๊ณตํต ๊ด์ฌ ์ฌํญ(cross-cuttin concern) ๊ธฐ์กด OOP (๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ)์์๋ ๊ณตํต๊ด์ฌ์ฌํญ์ ์ฌ๋ฌ ๋ชจ๋์์ ์ ์ฉํ๋๋ฐ ์์ด ์ค๋ณต๋ ์ฝ๋๋ฅผ ์์ํ๋ ํ๊ณ๊ฐ ์กด์ฌํจ. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด AOP๊ฐ ๋ฑ์ฅ AOP๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ํต์ฌ ๊ด์ฌ ์ฌํญ๊ณผ ์ ์ฒด์ ์ ์ฉ๋๋ ๊ณตํต ๊ด์ฌ ์ฌํญ์ ๊ธฐ์ค์ผ๋ก ํ๋ก๊ทธ๋๋ฐํจ์ผ๋ก์จ ๊ณตํต ๋ชจ๋์ ์์ฝ๊ฒ ์ ์ฉํ ์ ์๊ฒ ํจ AOP๋ application์์์ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ(๊ธฐ๋ฅ์ ๋ถ๋ฆฌ) ์ฆ, ํต์ฌ์ ์ธ ๊ธฐ๋ฅ์์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํจ. ๋ถ๋ฆฌํ ๋ถ๊ฐ๊ธฐ๋ฅ์ ์ด์คํฉํธ(Aspect) (=๊ณตํต ๊ด์ฌ ์ฌํญ) ๋ผ๋ ๋
ํนํ ๋ชจ๋ ํํ๋ก ๋ง๋ค์ด์ ์ค๊ณํ๊ณ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ. OOP๋ฅผ ์ ์ฉํ์ฌ๋ ํต์ฌ๊ธฐ๋ฅ์์ ๋ถ๊ฐ๊ธฐ๋ฅ..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋ฌธ์ : https://www.acmicpc.net/problem/12851 12851๋ฒ: ์จ๋ฐ๊ผญ์ง 2 ์๋น์ด๋ ๋์๊ณผ ์จ๋ฐ๊ผญ์ง์ ํ๊ณ ์๋ค. ์๋น์ด๋ ํ์ฌ ์ N(0 ≤ N ≤ 100,000)์ ์๊ณ , ๋์์ ์ K(0 ≤ K ≤ 100,000)์ ์๋ค. ์๋น์ด๋ ๊ฑท๊ฑฐ๋ ์๊ฐ์ด๋์ ํ ์ ์๋ค. ๋ง์ฝ, ์๋น์ด์ ์์น๊ฐ X์ผ ๋ www.acmicpc.net ๊ธฐ์กด์ ์จ๋ฐ๊ผญ์ง ๋ฌธ์ ์์ ์ต๋จ๊ฒฝ๋ก์ ๊ฐฏ์๊น์ง ๊ตฌํด์ผ ํ๋ค. 1. ๋ชฉ์ ์ง์ ๋๋ฌํ๋ฉด ํจ์๋ฅผ ์ข
๋ฃํ๋ ๊ฒ์ด ์๋ ๊ณ์ ํ์์ ์ด์ด๋๊ฐ๋๋ก ํจ์๋ฅผ ๊ตฌ์ฑํ๋ค. while(!pq.isEmpty()){ Node cur = pq.poll(); if(cur.idx==K && cur.w==dist[K]){ // ๋ชฉํ์ง์ ์ ๋๋ฌํ ๊ฒฝ์ฐ count+=1; } ... } ..
๐๋ฐฑ์๋ : Backend
SpringFramework๋? Spring Framework ๋ ์๋ฐ๋ก Enterprise Application ์ ๋ง๋ค ๋ ํฌ๊ด์ ์ผ๋ก ์ฌ์ฉํ๋ Programming ๋ฐ Configuration Model ์ ์ ๊ณตํด ์ฃผ๋ Framework ๋ก Application ์์ค์ ์ธํ๋ผ ์คํธ๋ญ์ณ๋ฅผ ์ ๊ณต. ์ฆ ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ๊ณ ์ค์ํ๊ธฐ ์ฌ์ด Low Level ( ์ฝ๊ฒ ๋งํ๋ฉด setting )์ ์ ๊ฒฝ์ฐ์ง ์๊ณ Business Logic๊ฐ๋ฐ์ ์ ๋
ํ ์ ์๋๋ก ํด์ค๋ค Spring Container ์คํ๋ง ์ปจํ
์ด๋๋ ์คํ๋ง์์ ์๋ฐ ๊ฐ์ฒด๋ค์ ๊ด๋ฆฌํ๋ ๊ณต๊ฐ์ ๋งํจ. ์๋ฐ ๊ฐ์ฒด๋ฅผ ์คํ๋ง์์ ๋น(Bean)์ด๋ผ๊ณ ํ๋๋ฐ, ์คํ๋ง ์ปจํ
์ด๋์์๋ ์ด ๋น(Bean)์ ์์ฑ๋ถํฐ ์๋ฉธ๊น์ง๋ฅผ ๊ฐ๋ฐ์ ๋์ ๊ด๋ฆฌํด์ฃผ๋ ๊ณณ์ด๋ผ๊ณ ํ ์ ์์..
๐๋ฐฑ์๋ : Backend
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(Java Server Page) HTML๋ด์ ์๋ฐ ์ฝ๋๋ฅผ ์ฝ์
ํ์ฌ ์น ์๋ฒ์์ ๋์ ์ผ๋ก ์น ํ์ด์ง๋ฅผ ์์ฑํ์ฌ ์น ๋ธ๋ผ์ฐ์ ์ ๋๋ ค์ฃผ๋ ์ธ์ด ์คํ ์ servlet์ผ๋ก ๋ณํ๋ ํ ์คํ ๋จ (์ต์ด ํ ๋ฒ + JSP์์ ์) ๋ณํ์ WAS๊ฐ ํด์ค๋ค. JSP๊ฐ ๋น ๋ฅผ๊น Servlet์ด ๋น ๋ฅผ๊น? JSP๋ Servlet์ผ๋ก ๋ณํ๋๋ ๊ณผ์ ์ด ์๊ธด ํ์ง๋ง, ์ต์ด ํ ๋ฒ๊ณผ ์์ ์์๋ง ๋ณํ๋๋ค. JSP์์ GET๊ณผ POST๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐฉ๋ฒ request.getMethod() JSP ๋ฌธ๋ฒ ์ ์ธ๋ฌธ ๋ฉค๋ฒ๋ณ์ ์ ์ธ์ด๋ ๋ฉ์๋๋ฅผ ์ ์ธํ๋ ์์ญ ์ ์ธ๋ฌธ ์์ System.out.println("A"); ๊ณผ ๊ฐ์ ๋ช
๋ น์ ๋ฃ์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์ฒ๋ฆฌ๋ฌธ - ํด๋ผ์ด์ธํธ ์์ฒญ ์ ๋งค๋ฒ ํธ์ถ๋๋ ์์ญ. - Servlet์ผ๋ก ๋ณํ ์ se..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
์ ์์ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ํธ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ , ํ์์ํ๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค. ํ์ด ์์ 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..