๐ 1. ์ต๋๊ฐ ๋ง๋ค๊ธฐ ๐ก ํ์ด๊ณผ์ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋ค์ ๊ฐ์ฅ ๋ ๊ฐ 2๊ฐ๋ฅผ ๊ณฑํ ๊ฐ, ์์๊ฐ 2๊ฐ๋ฅผ ๊ณฑํ ๊ฐ ์ค ๋ ํฐ ๊ฐ์ ๋ฐํ์ด๋ ๊ฒ ํ๋ ์ด์ ๋ ์์๊ฐ ์์์ผ ์๋ ์๊ณ ์์์ผ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๐จโ๐ป ์ ๋ต์ฝ๋import java.util.*;class Solution { public int solution(int[] numbers) { Arrays.sort(numbers); int n = numbers.length; // ๊ฐ์ฅ ํฐ ๋ ์์ ๊ณฑ vs ๊ฐ์ฅ ์์ ๋ ์์ ๊ณฑ ์ค ์ต๋๊ฐ ๋ฐํ // ์์์ผ ๊ฐ๋ฅ์ฑ ๋๋ฌธ์ return Math.max(numbers[n - 1] * numbers[n - 2..

My Tech Blog (๋ฉ์๋)
์ค๋์ ๋ช
์ธ

Spring ํ๋ก์ ํธ์์๋ ์๋น์ค ๋ ์ด์ด์์ ์ธํฐํ์ด์ค(*Mgr.java)์ ๊ตฌํ ํด๋์ค(*MgrImpl.java)๊ฐ ๋ถ๋ฆฌ๋์ด ์์ด, F3(Open Declaration)๋ฅผ ๋๋ฌ๋ ์ธํฐํ์ด์ค๋ก๋ง ์ด๋ํ๋ ๋ถํธํจ์ด ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Open Implementation ๊ธฐ๋ฅ์ ํค๋ณด๋ ๋จ์ถํค(Ctrl + F3)๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌ ํด ๋ณธ๋ค. ๐น ํด๊ฒฐ ๋ฐฉ๋ฒ: Open Implementation ๋จ์ถํค ์ค์ ํ๊ธฐ 1. Eclipse ํ๊ฒฝ์ค์ Window โ Preferences (๋๋ Alt + W, P)2. ์ข์ธก ๋ฉ๋ด์์ General โ Keys ์ ํ3. "Open Implementation" ๋จ์ถํค ์ง์ type filter text์ Open Implementation ์
๋ ฅ Binding(๋จ์ถ..
๐ 1. ๋ฌธ์ ์ค๋ช
๐ก 2. ์ค๋ต์ ๋ฆฌ (ํ๋ฆฐ์ฝ๋)class Solution { public String solution(String my_string, String letter) { StringBuilder sb = new StringBuilder(); for(char c : my_string.toCharArray()) { if(!c.equals(letter) sb.append(c); } return sb.toString(); }} string ํ์
๋ผ๋ฆฌ ๋น๊ตํ ๋๋ .equals ๋ฅผ ์ด๋ค. ๊ทธ๋์ .equals์ ๋ถ์ ์ธ !c.equals(letter)์ ์ผ๋๋ฐ ์ด ๋ถ๋ถ์ด ํ๋ ธ๋ค. ํ๋ฆฐ ์ด์ ๋ String ์ด๋ char ํ์
..
๐ 1. ๋ฌธ์์ด ์๊ธฐ ๐ก 1-1. ์ ๊ทผ๋ฐฉ์โ ๋จ์ํ ์ฃผ์ด์ง ๋ณ์๋ช
๊ทธ๋๋ก a + b > b + a ์ด๋ ๊ฒ ๋น๊ตํ๋ฉด ๋ ์ซ์๋ ์ ์ ๋ง์
์ด๊ธฐ ๋๋ฌธ์ ํญ์ a + b == b + a๊ฐ ๋๋ค. ๋ฌธ์ ์์ ์๋ํ ๊ฒ์ ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ์ฐ๊ฒฐํ ํ, ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๋ ๊ฒ์ด๋ค. ์ฌ๋ฐ๋ฅด๊ฒ ๋น๊ตํ๋ ค๋ฉด String.valueOf(a) + b์ String.valueOf(b) + a ๋ฅผ ๋น๊ตํด์ผ ํ๋ค. โ ๋ ๋๋ ์ฒ์์ sb.toString()์ ์จ์ int๋ก ๋ฐํํ๋ ์ค์๋ฅผ ํ๋๋ฐ, sb.toString()์ ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์, int ํ์
์ ๋ฐํํ๋ solution ๋ฉ์๋์ ํ์
์ด ๋ง์ง ์๋๋ค. ๊ทธ๋์ Integer.parseInt(sb.toString())์ ์ฌ์ฉํ์ฌ ๋ณํํด์ผ ํ๋ค. ํ๋ฆฐ ์ฝ๋clas..
๐ 1. ๋ฌธ์ ์ค๋ช
๐ก 2. ์ ๋ต์ฝ๋๐
๐ปโโ๏ธ ์ฒซ ๋ฒ์งธ ์๋ - ํ๋ฆผ โํ๋ก๊ทธ๋๋จธ์ค ์ฝ์์ด ์๋์์ฑ์ด ์ ๋๊ธฐ ๋๋ฌธ์ ์๊ฐ๋๋๋ฐ๋ก ์จ์ ๋ง์ด ํ๋ ธ๋ค.class Solution { public String solution(String str1, String str2) { StringBuilder sb = new StringBuilder(); for(int i = 0; i ์ค๋ต ์ ๋ฆฌโญ str1.length โ str1.length() length๋ ๋ฐฐ์ด์์ ์ฌ์ฉ๋๊ณ , ๋ฌธ์์ด์์๋ length() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. โญ sb.add(...) โ sb.append(...)StringBuilder๋ add() ๋ฉ์๋๊ฐ ์๊ณ , ๋์ append()๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.โญ st..
๐ 1. ๋ฌธ์ ์ค๋ช
โญ 2. ์ ๋ต์ฝ๋class Solution { public String solution(String my_string, String overwrite_string, int s) { // ์๋ถ๋ถ๊ณผ ๋ท๋ถ๋ถ์ ์ถ์ถํ ํ overwrite_string์ ์ค๊ฐ์ ์ฝ์
String before = my_string.substring(0, s); String after = my_string.substring(s + overwrite_string.length()); return before + overwrite_string + after; }} โญ String before = my_string.substring(0, s); ์์ substr..

โ
session ๊ด๋ฆฌโ
logout.jspโ
main.jsp ๋ง๋ค๊ธฐ ์ง๊ธ๊น์ง ํ์๊ฐ์
, ๋ก๊ทธ์ธ ๊ธฐ๋ฅ๊น์ง ๊ตฌํํด๋ณด์๋ค.์ด์ ์ธ์
๊ด๋ฆฌ๋ฅผ ํด ๋ณด์. `session` ์ด๋ ํ์ฌ ์ ์ํ ํ์์๊ฒ ํ ๋นํด์ฃผ๋ ๊ณ ์ ํ ์์ด๋์ด๋ค.๋ก๊ทธ์ธ์ ์ฑ๊ณตํ ํ์์๊ฒ ๊ฐ๊ฐ `session`์ ๋ถ์ฌํด์ฃผ๋ ๊ณผ์ ์ ๊ตฌํํด๋ณด์. `loginAction.jsp`์ `session`์ ์ค์ ํด์ฃผ๋ `session.setAttribute()` ์ฝ๋ ํ ์ค ํ์ดํ!`joinAction.jsp`์๋ ์ฝ๋ ๋ณต๋ถํด์ ๋ฃ์ด ์ค๋ค.๋ก๊ทธ์ธ ์ฑ๊ณตํ ํ์์๊ฒ ์ธ์
๋ถ์ฌํ๊ณ ๋ฉ์ธ ํ์ด์ง๋ก ๋์ด๊ฐ๊ฒ๋ ํด ์ค๋ค. ์ด๋ ๊ฒ ์ธ์
์ ์ค์ ํด ์ฃผ์๋ค. ์ธ์
์ ํด์ ํ๊ธฐ ์ ๊น์ง๋ ์ ํจํ๊ธฐ ๋๋ฌธ์ ํ ๋นํ ์ธ์
์ ํด์ ํ ์ ์๋ ๋ก๊ทธ์์ ํ์ด์ง๋ ๋ง๋ค์ด ์ฃผ์. `joinAc..

์ ๋ฒ์ ํ์๊ฐ์
์์ `join.jsp` ๊น์ง ๋ง๋ค์๋ค. ์ค๋์ userDAO ํด๋์ค์ ํ์๊ฐ์
์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ํ๋ ์ถ๊ฐํด ์ค๊ฒ์ด๋ค.DAO ํด๋์ค๋ ์ค์ ๋ก DB์ ์ ๊ทผํด์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ์ญํ ์ ํ๋ ๋ฐ์ดํฐ ์ ๊ทผ ๊ฐ์ฒด์ด๋ค.๊ทธ๋ฆฌ๊ณ ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ ธ์์ View ์ฒ๋ฆฌํ๋ `join Action.jsp` ๊น์ง ๋ง๋ค์ด ๋ณผ ๊ฒ์ด๋ค. ๋จผ์ userDAO ํด๋์ค๋ก ๊ฐ๋ค.login ๋ฉ์๋ ์๋์ join ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ์ค๋ค.// ํ์๊ฐ์
์ฒ๋ฆฌ ๋ก์ง public int join(User user) { String SQL = "INSERT INTO USER VALUES(?, ?, ?, ?, ?)"; try { psmt = conn.prepareStatem..