# WIL(05.16~05.21)

junsj119ยท2022๋ 5์ 22์ผ
0

## WIL

๋ชฉ๋ก ๋ณด๊ธฐ
2/13

### 05.16

reverse(answer.begin(), answer.end());

sqrt()

๐์ ๊ณฑ๊ทผ์ ๊ตฌํ๋ ํจ์

max_element(), min_element()

arr.erase(min_element(arr.begin(), arr.end()));

๐์ต๊ณ ๊ฐ, ์ต์๊ฐ์ ์ฐพ๋ ํจ์
๐line 2 : ์ ์ผ ์์ ์ ์ ๊ฑฐ

### 05.17

์๊ณ ๋ฆฌ์ฆ์ ํ๋ฉด์ ํท๊ฐ๋ ธ๋ ๊ฒ๋ค์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ  ํ๋ค.

์ด ํ๋ฅผ ๋ณด๋ฉด์ ์์๋ณด์

vector<char>vec;

if (vec[i] >= 65 && vec[i] <= 90) // ๋๋ฌธ์ ๋ฌผ๋ก  65 -> 'A' ๊ฐ๋ฅ
else if (vec[i] >= 97 && vec[i] <= 122) // ์๋ฌธ์
else if (vec[i] >= 48 && vec[i] <= 57) // ์ซ์


๐๋๋ฌธ์๋ ์๋ฌธ์๋ณด๋ค ์์คํค์ฝ๋ ๊ฐ์ด ๋ฎ๋ค.

answer += (s[i] - 48) // char to int
์ฆ answer += (s[i] - '0')์ ๊ฐ์ ๋ป

๐์ด๋ ๊ฒ string ๋ณ์์ index๋ก ์ ๊ทผํ๋ฉด์ -48์ ํด์ฃผ๋ฉด
int๋ก ํ ๋ณํ๊ณผ ๋์์ intํ ๋ณ์์ ์ ์ฅ์ ํ  ์ ์๋ค.

if (s[i] - '0' >= 0 && s[i] - '0' <= 9)

๐์ด if๋ฌธ์ s๋ผ๋ string ๋ณ์์ ์ซ์๊ฐ ์๋ ํ๋ณํ๋ ๊ฒ์ด๋ค.
-'0'์ ํด์ค ํ ๊ทธ ๊ฐ์ด 0 ~ 9 ์ฌ์ด๋ผ๋ฉด ์ซ์์ด๋ค.

if (isupper(vec[i])) // ๋๋ฌธ์ ํ๋ณ isupper
else if (islower(vec[i])) // ์๋ฌธ์ ํ๋ณ islower

๐๋๋ฌธ์, ์๋ฌธ์ ํ๋ณํ๋ ํจ์์ด๋ค. ์ ์ฉํ ์ฐ์ผ ๊ฒ ๊ฐ๋ค.

char ctmp2 = 1 + '1';
cout << ctmp2 << '\n';		//2

char ctmp2 = 1 + '8';
cout << ctmp2 << '\n';		//9

int itmp = 1 + '0';
cout << itmp << '\n';		//49

๐ int, char~

int n; cin >> n;
string str = "";
str += ('A' - 'A' + n) % 26 + 'A';	//์ํ๋ฒณ ๊ฐฏ์ 26

๐ ๋ฌธ์์ด์ n๋งํผ ์ฆ๊ฐ ex) n=3 A->D

vec.assign({ cnt1, cnt2, cnt3 });

๐ vector์ ์ฌ๋ฌ๊ฐ์ ๊ฐ์ ํ ๋ฒ์ ๋ฃ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.

### 05.18

DI ์ฌ๊ธฐ์ ์ ๋ฆฌ

### 05.19

Collection ์ฌ๊ธฐ์ ์ ๋ฆฌ

### 05.20 ~ 05.21

spring ์ฌ๊ธฐ ์ด์ธ์๋ ๋ช ๊ฐ ์ ๋ฆฌ

### ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋?

๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object-Oriented Programming, OOP) ์
ํ๋ก๊ทธ๋๋ฐ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํ์ํจ ํ ์ํ์ ํ์๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ  ๊ทธ ๊ฐ์ฒด๋ค ๊ฐ ์ํธ์์ฉ์ ํตํด ๋ก์ง์ ๊ตฌ์ฑํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ด๋ค.

ํด๋์ค, ๊ฐ์ฒด, ์ธ์คํด์ค ๋ ๊ฐ๋จํ๊ฒ ์์๋ณด์!

ํด๋์ค - ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋ด๊ธฐ ์ํ ์ค๊ณ๋.
๊ฐ์ฒด - ํด๋์ค์ ์ ์ธ๋ ๋ชจ์ ๊ทธ๋๋ก ์์ฑ๋ ์ค์ฒด, ๊ตฌํํ  ๋์.
์ธ์คํด์ค - ํด๋์ค๋ฅผ ํตํด์ ๊ตฌํํด์ผํ  ๋์(๊ฐ์ฒด)์ด ์ค์ ๋ก ๊ตฌํ๋ ๊ตฌ์ฒด์ ์ธ ์ค์ฒด

#### ๊ฐ์ฒด์งํฅ ์ฅ/๋จ์ 

• ์ฅ์ 
1. ์์์ ํตํด ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค.
2. ํ๋ก๊ทธ๋จ์ ์์ ํ๋๋ผ๋ ์บก์ํ๋ฅผ ํตํด ์ฃผ๋ณ ์ํฅ์ด ์ ๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์๊ฐ ์ฝ๋ค.
3. ๋๋ฆฝ์ ์ธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ํฅ์์ํจ๋ค.
• ๋จ์ 
1. ๋ณต์กํด์ง์๋ก ์ฝ๋ ๋์ด๋๊ฐ ์ฌ๋ผ๊ฐ๋ค.
2. ์ค๊ณ๋จ๊ณ๋ถํฐ ๋ง์ ์๊ฐ์ ํฌ์ํด์ผํ๋ค.
3. ์คํ์๋๊ฐ ๋๋ฆฌ๋ค.

#### ๊ฐ์ฒด์งํฅ ํน์ง

์์(Inheritance) - ๋ถ๋ชจํด๋์ค์ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ์ด์ด๋ฐ์ ์ฌ์ฉํ  ์ ์๊ฒํ๋ ๊ฒ์ด๋ค.
์ถ์ํ(abstraction) - ๊ฐ์ฒด์ ๊ณตํต์ ์ธ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ์ถ์ถํ์ฌ ์ ์ํ๋๊ฒ์ ๋งํ๋ค.
๋คํ์ฑ(Polymorphism) - ํ๋์ ๊ฐ์ฒด๊ฐ ์ํฉ์ ๋ฐ๋ผ ์ฌ๊ตฌ์ฑ ๋๋ ๊ฒ์ด๋ค.

• ์ค๋ฒ๋ผ์ด๋ฉ : ์์ ํด๋์ค๊ฐ ๊ฐ์ง๊ณ  ์๋ ๋ฉ์๋๋ฅผ ํ์ ํด๋์ค๊ฐ ์ฌ์ ์ํด์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
• ์ค๋ฒ๋ก๋ฉ : ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ๊ฐ ์ ์ํ๊ณ , ๋งค๊ฐ๋ณ์์ ํ์๊ณผ ๊ฐ์๋ฅผ ๋ค๋ฅด๊ฒ ํ์ฌ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํธ์ถํ  ์ ์๊ฒ ํ๋ ๊ฒ์ด๋ค.

์บก์ํ(Encapsulation) - ๋ฐ์ดํฐ์ ์ฝ๋์ ํํ๋ฅผ ์ธ๋ถ๋ก๋ถํฐ ์ ์์๊ฒ ํ๊ณ , ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ์ญํ , ๊ธฐ๋ฅ์ ํ๋์ ์บก์ํํ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ด๋ค.

### JVM(Java Virtual Machine)์ด๋?

์๋ฐ ๊ฐ์ ๋จธ์ ์ด๋ค.
์๋ฐ ํ๋ก๊ทธ๋จ์ ์ด์์ฒด์ , ํ๋์จ์ด์ ์๊ด์์ด ์คํํ  ์ ์๊ฒ ํด์ฃผ๊ณ , ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ณ  ์ต์ ํํด์ค๋ค.

#### ์๋ฐ์ฝ๋ ์คํ ๊ณผ์ 

1. ์์ฑํ ์๋ฐ์์ค(.java)๋ฅผ ์๋ฐ ์ปดํ์ผ๋ฌ(javac)๋ฅผ ํตํด ์๋ฐ ๋ฐ์ดํธ ์ฝ๋(.class)๋ก ์ปดํ์ผํ๋ค.
3. ์คํ์์ง(Execution Engine)์ JVM๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๋ฐ์ดํธ ์ฝ๋๋ค์ ๋ช๋ น์ด ๋จ์๋ก ํ๋์ฉ ๊ฐ์ ธ์์ ์คํํ๋ค.

#### JVM ๊ตฌ์กฐ

Class Loader, Execution Engine, Runtime Data Area๋ก ๊ตฌ์ฑ๋์ด ์๋ค.

Class Loader - ํด๋์ค๋ฅผ ๋ก๋ํ๊ณ , ํด๋์ค์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ , ํด๋์ค์์ ์ ์๋ ํ๋, ๋ฉ์๋, ์ธํฐํ์ด์ค๋ค์ ๋ํ๋ด๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ค๋นํ๋ค.

Execution Engine - ํด๋์ค๋ฅผ ์คํ์ํค๋ ์ญํ ์ ํ๋ค. ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ ํด์ ํ๋ค.

Runtime Data Area - JVM์ด OS์์ ์คํ๋๋ฉด์ ํ ๋น๋ฐ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์๋๋ค.

์ด ์ค PC Register, JVM Stack, Native Method Stack์ ์ค๋ ๋(Thread)๋ง๋ค ํ๋์ฉ ์์ฑ๋๊ณ ,
Heap, Method Area์ ๋ชจ๋  ์ค๋ ๋๊ฐ ๊ณต์ ํด์ ์ฌ์ฉ๋๋ค.

๋ฐ์ด๋ฐ์ด...