๐ ์๋ฃํ๊ณผ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ ๋ณ์
๐ int *ptr = &a;
๐ ํฌ์ธํฐ ๋ณ์ ์ * ๋ถ์ด๋ฉด ํด๋น ์ฃผ์์ ์ ์ฅ๋ ๊ฐ์ ์๋ฏธ
โ int a = 3; (๊ฐ์ ) // cout ยซย *ptr ยซย endl; // 3 ์ถ๋ ฅ
โ & : ์ฃผ์ ์ฐ์ฐ์ (ampersand)
โ * : ์ญ์ฐธ์กฐ์ฐ์ฐ์ (asterisk)
๐ ํจ์ ํธ์ถ ์ ์ ๋ฌ๋๋ ์ธ์๋ ํญ์ ๋งค๊ฐ๋ณ์์ ์ฌ๋ณธ์ด ์ ๋ฌ๋จ
๐ Call-by-Value
ใใ๐ ํจ์ ํธ์ถ ์ ์ธ์๋ก ๊ฐ(Value)์ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์
ใใ๐ ๋ณต์ฌ ๋ฐฉ์, ๊ฐ์ ๋ณต์ฌํ์ฌ ์ฆ, ์ฌ๋ณธ์ ์์ฑํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์
ใใ๐ ์ฆ, ๋ฐ์ดํฐ์ ๋ณต์ฌ ์ฐ์ฐ(๋น์ฉ)์ด ๋ฐ์ O + ์๋ณธ์ ์ํฅ์ ์ฃผ์ง X
๐ Call-by-Reference
ใใ๐ ํจ์ ํธ์ถ ์ ์ธ์๋ก ๋ ํผ๋ฐ์ค(Reference, ์ฃผ์๊ฐ)์ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์
ใใ๐ ์ฐธ์กฐ ๋ฐฉ์, ๋จ์ํ ์ฃผ์ ๊ฐ์ ํตํด ์ฐธ์กฐํ๋ ๋ฐฉ์
ใใ๐ ์ฆ, ๋ฐ๋ก ๋ฐ์ดํฐ์ ๋ณต์ฌ ์ฐ์ฐ(๋น์ฉ)์ด ๋ฐ์ํ์ง X + ์๋ณธ์ ์ํฅ์ ์ฃผ๊ฒ๋จ
ใใโ ์๋ณธ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ง์๋๋ const
ใใ๐ 1. ํฌ์ธํฐ๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์ // add(&a, &b), void add(int *a, int *b)
ใใ๐ 2. ๋ ํผ๋ฐ์ค๋ฅผ ์ด์ฉํ๋ ๋ฐฉ์ // add(a, b), void add(int &a, int &b)
๐ Link
๐ ์๋์ ์์ฑ์, ์์, virtual ์ฐธ๊ณ
๐ ํ๋ก๊ทธ๋๋จธ์๊ฒ ํ๋ก๊ทธ๋๋ฐ์ ๊ด์ ์ ๊ฐ๊ฒํ๊ณ ์ด๋ป๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ์ง ๊ฒฐ์ ํ๋ ์ญํ ์ ํจ
ใใ๐ ๋ช
๋ นํ ํ๋ก๊ทธ๋๋ฐ
ใใใใ๐ ๋ฌด์(What)์ ํ ๊ฒ์ธ์ง๋ฅผ ๋ํ๋ด๊ธฐ๋ณด๋ค ์ด๋ป๊ฒ(How) ํ ๊ฒ์ธ์ง๋ฅผ ์ค๋ช
ํ๋ ๋ฐฉ์
ใใใใใใ๐ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ โ๏ธ
ใใใใใใใใ๐ ํ๋ก๊ทธ๋๋ฐ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํ์์ผ ์ํ์ ํ์๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ทธ ๊ฐ์ฒด๋ค ๊ฐ์ ์ ๊ธฐ์ ์ธ ์ํธ์์ฉ์ ํตํด ๋ก์ง์ ๊ตฌ์ฑํ๋ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์
ใใใใใใใใ๐ ์ฝ๋ ์ฌ์ฌ์ฉ์ด ์ฉ์ดํ๋ฉฐ, ์ ์ง ๋ณด์๊ฐ ์ฌ์ฐ๋ฏ๋ก ๋ํ ํ๋ก์ ํธ์ ์ ํฉ
ใใใใใใใใ๐ But, ์ฒ๋ฆฌ์๋๊ฐ ์๋์ ์ผ๋ก ๋๋ฆฌ๋ฏ๋ก, ๊ฐ์ฒด๊ฐ ๋ง์ผ๋ฉด ์ฉ๋์ด ์ปค์ง ์ ์์
ใใใใใใ๐ ์ ์ฐจ ์งํฅ ํ๋ก๊ทธ๋๋ฐ(์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ)
ใใใใใใใใ๐ ์์ฐจ์ ์ธ ์ฒ๋ฆฌ๊ฐ ์ค์์ ๋๋ฉฐ ํ๋ก๊ทธ๋จ ์ ์ฒด๊ฐ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ์ด ๋๋๋ก ๋ง๋๋ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์
ใใใใใใใใ๐ ์ปดํจํฐ ์ฒ๋ฆฌ ๊ตฌ์กฐ์ ์ ์ฌํ์ฌ ์คํ ์๋๊ฐ ๋น ๋ฆ
ใใใใใใใใ๐ ์คํ ์์๊ฐ ์ ํด์ ธ ์์ด ๋นํจ์จ์ ์ด๋ฉฐ, ๋๋ฒ๊น
๋ฐ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์
ใใ๐ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ
ใใใใ๐ ์ด๋ป๊ฒ(How) ํ ๊ฒ์ธ์ง๋ฅผ ๋ํ๋ด๊ธฐ๋ณด๋ค ๋ฌด์(What)์ ํ ๊ฒ์ธ์ง๋ฅผ ์ค๋ช
ํ๋ ๋ฐฉ์
ใใใใใใ๐ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
ใใใใใใใใ๐ ๋ถ์ ํจ๊ณผ๋ฅผ ์์ ๊ณ ์์ ํจ์๋ฅผ ๋ง๋ค์ด ๋ชจ๋ํ ์์ค์ ๋์ด๋ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์
ใใใใใใใใ๐ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋ฉค๋ฒ ๋ณ์๋ฅผ ๋ค๋ฃธ์ ์์ด ์์์น ๋ชปํ ๋ฒ๊ทธ๊ฐ ์ผ์ด๋ ์ ์๊ธฐ์ ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ฐ์
ใใใใใใใใ๐ ๋ถ์ ํจ๊ณผ : ํจ์ ๋ด๋ถ์ ์คํ์ผ๋ก ์ธํด ํจ์ ์ธ๋ถ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒ
ใใใใใใใใ๐ ์์ ํจ์ : ์ธ๋ถ์ ์ํ ๋ณ๊ฒฝ์ ์๋ฌด๋ฐ ์ํฅ์ ์ฃผ์ง๋, ๋ฐ์ง๋ ์๋ ํจ์ (๋์ผํ ์
๋ ฅ โ ํญ์ ๋์ผํ ์ถ๋ ฅ์ ๋ฐํ)
ใใใใใใใใใใ๐ ์ด๋ค ํจ์์ ๊ฐ์ ์ธ์๋ฅผ ์ ๋ฌํ์ฌ ํญ์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ถ์์ฉ ์๋ ํจ์
ใใใใใใใใใใ๐ ๋ถ์์ฉ ์๋ ํจ์๊ฐ ํจ์ ์ธ๋ถ์ ์๋ฌด ์ํฅ์ ์ฃผ์ง ์์ ๊ฒฝ์ฐ ์ด๋ฅผ ์์ ํจ์
ใใใใใใใใ๐ ๋ชจ๋ : ๊ธฐ๋ฅ ๋จ์๋ก ๋ถ๋ฆฌํ์ฌ ๋
๋ฆฝ์ ์ผ๋ก ์ฌํ์ฉ๋ ์ ์๋ ์ํํธ์จ์ด ๋ฉ์ด๋ฆฌ
ใใใใใใใใ๐ ๋ชจ๋ํ : ์ํํธ์จ์ด์ ์ฑ๋ฅ์ ํฅ์์ํค๊ฑฐ๋ ํ
์คํธ ํน์ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๋๋ก ํ๋ ์ํํธ์จ์ด ์ค๊ณ ๊ธฐ๋ฒ
๐ ํจ์์ ํด๋์ค๊ฐ ์ ๋ค๋ฆญ ํ๊ณผ ๋์ํ ์ ์๊ฒ ๋์์ฃผ๋ C++ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ธฐ๋ฅ
โ Templates are a feature of the C++ Programming language that allows functions and classes to operate with generic types
๐ Link
๐ ํด๋์ค/๊ฐ์ฒด, ์ถ์ํ, ๋คํ์ฑ, ์์, ์บก์ํ
๐ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ณธ ํ์ ์ ๊ฐ์ง๊ณ ์๋กญ๊ฒ ์ ์ํ ์ ์๋ ์ฌ์ฉ์ ์ ์ ํ์
๐ ์ด๋ ํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋ณ์์ ๋ฉ์๋๋ฅผ ์ ์ํ ํ
๐ ๊ณตํต์ : ๊ตฌ์กฐ์ฒด ์ด๋ฆ์ ์ ์ธํ๊ณ dot(.) ์ฐ์ฐ์๋ฅผ ํตํด ๊ฐ ๋๋ ํจ์์ ์ ๊ทผํ๋ค๋ ๊ฒ
๐ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ๋ฐฉ์
ใใ๐ Struct๋ ๊ฐ ํ์
, ๋ณต์ฌ ๋ฐฉ์์ผ๋ก ๋์
ใใใใ๐ Struct์ ์ธ์คํด์ค๋ ์คํ์ ์ ์ฅ
ใใ๐ Class๋ ์ฐธ์กฐ ํ์
, ์ฐธ์กฐ ๋ฐฉ์์ผ๋ก ๋์
ใใใใ๐ Class์ ์ธ์คํด์ค๋ ํ์ ์ ์ฅ๋๋ฉฐ, ๊ทธ ํ์ ์ธ์คํด์ค ์ฃผ์ ๊ฐ์ด stack์ ์ ์ฅ๋จ
๐ ๋ํ, ์ ๊ทผ์ ์ด ์ง์์์ default ๊ฐ์ด ๋ค๋ฆ
ใใ๐ Struct : public, Class : private
ใใ๐ ์ ๊ทผ ์ ์ด ์ง์์ : ๊ฐ์ฒด ๋ด์ ๋ฐ์ดํฐ ๋ฐ ํจ์์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ ์ดํ๋ ์ญํ
ใใ๐ public, private, protected // ๋ชจ๋ ์ ๊ทผ ํ์ฉ, ์ธ๋ถ ์ ๊ทผ ๋ถ๊ฐ๋ฅ, ์์ ํด๋์ค ์ ๊ทผ ๊ฐ๋ฅ
๐ An Object is an Instance of a Class
โ a = Cookie() // a ๊ฐ์ฒด๋ Cookie ํด๋์ค์ ์ธ์คํด์ค
๐ Object
ใใ๐ ์ํํธ์จ์ด ์ธ๊ณ์ ๊ตฌํํ ๋์
ใใโ ํด๋์ค์ ํ์
์ผ๋ก ์ ์ธ๋์์ ๋
๐ Instance
ใใ๐ ์ํํธ์จ์ด ์ธ๊ณ์ ๊ตฌํ๋ ์ค์ฒด
ใใโ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋์ด ์ค์ ์ฌ์ฉ๋ ๋
๐ ํ์ค ์ธ๊ณ์ ์ฌ๋ฌผ์ ๋ฐ์ดํฐ์ ์ธ ์ธก๋ฉด๊ณผ ๊ธฐ๋ฅ์ ์ธ ์ธก๋ฉด์ผ๋ก ๋ชจ๋ธ๋งํ์ฌ ์์คํ ๋ด์ ์ฌ๋ฌผ๋ก ์ ์ํ๋ ๊ฒ
๐ ๋ณด์ด๋ ๋ชจ์ต์ ํ๋์ด์ง๋ง ์ค์ง์ ์ผ๋ก ์ฐ์ด๋ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ๊ฐ์ง๋ก ์ํ ๊ฐ๋ฅํ๋ค๋ ๊ฒ
โ Polymorphism is the provision of a single interface to entities of different types or the use of a single symbol to represent multiple different types
๐ ๊ฐ์ฒด๋ฅผ ์ฌํ์ฉํ๊ธฐ ์ฌ์์ง๊ธฐ ๋๋ฌธ์ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๊ณ ์ ์ง๋ณด์๊ฐ ์ฉ์ด
๐ Overloading, Overriding
๐ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ํจ์๋ฅผ ์ค๋ณตํด์ ์ ์ํ๋ ๊ฒ
๐ ๋จ, ๋ฐ๋์ ์ธ์ ๊ฐ์ ํน์ ํ์
์ด ๋ฌ๋ผ์ผ ํจ
๐ ๊ฐ๋ฅํ ์ด์ : ํธ์ถํ ํจ์์ ๋งค๊ฐ๋ณ์ ์ ๋ณด๊น์ง ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ
๐ return ํ์
๋ง ๋ค๋ฅผ ๊ฒฝ์ฐ๋ error
๐ ์์ ๋ฐ์์ ๋ ๋ถ๋ชจ ํด๋์ค์ ํจ์๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ์ง ์๊ณ ๋ค๋ฅธ ๊ธฐ๋ฅ์ผ๋ก ์คํํ๊ธฐ ์ํด ์์ ํด๋์ค์์ ๋์ผํ ์ด๋ฆ์ผ๋ก ํจ์๋ฅผ ์ฌ์ ์ํ๋ ๊ฒ
๐ Overloading : ๋์์ด ๋๋ ํจ์๋ฅผ ์ปดํ์ผ ํ์์ ์ง์ , ์ ์ ๋ฐ์ธ๋ฉ ๊ฐ๋
๐ Overriding : ๋์์ด ๋๋ ํจ์๋ฅผ ๋ฐ ํ์์ ์ง์ , ์ ์ /๋์ ๋ฐ์ธ๋ฉ ๊ฐ๋
๐ ex) code
class Car
{
void hi() { cout << "hi Car!"; }
// virtual void hi() { cout << "hi Car!"; }
};
class Suv : Car
{
void hi() { cout << "hi Suv!"; } // Overriding
};
class Bt : Suv
{
void hi() { cout << "hi Bt!"; } // Overriding
};
void hello(Car c) { cout << "hello Car!"; } // Overloading
void hello(Suv s) { cout << "hello Suv!"; } // Overloading
int main()
{
Car c = Car();
Suv s = Suv();
hello(c); // hello Car!
hello(s); // hello Suv!
Car suv = Suv();
hello(suv); // hello Car!
// ์ปดํ์ผ ์์ ์ ์ง์ ๋๋ฏ๋ก
// ์ด ์์ ์ Car suv์ ์ค์ ๋ก ๋ฌด์์ด ๋ค์ด ์๋์ง ์์ง ๋ชปํจ
suv.hi(); // hi Car!
// ์ ์ ๋ฐ์ธ๋ฉ์ผ๋ก ์ธํด hi Car!๊ฐ ์ถ๋ ฅ
// virtual ํค์๋๋ฅผ ๋ถ์ฌ๋ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ (hi Suv! X)
Car* mysuv;
mysuv = &s;
mysuv->hi(); // hi Car!
// ์ ์ ๋ฐ์ธ๋ฉ์ผ๋ก ์ธํด hi Car!๊ฐ ์ถ๋ ฅ
// virtual ํค์๋๋ฅผ ๋ถ์ด๋ฉด ๋์ ๋ฐ์ธ๋ฉ๋ ๊ฒฐ๊ณผ์ธ hi Suv! ์ถ๋ ฅ
// ์ ํํ๊ฒ๋, virtual ํค์๋๋ฅผ ๋ง๋๋ฉด ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ์์ ์ ์ ์ ์์ผ๋๊น
// ํ๋ก๊ทธ๋จ์ ์คํํ๋ ์์ ์์ ๊ฒฐ์ ํ๊ฒ๋ ๋ฏธ๋ฃจ๋ ๋์ ๋ฐฉ์
//...
}
๐ ๋ฐ ํ์์ ๋ฉ์๋๊ฐ ๊ฒฐ์ ๋๋ ๋ฐ์ธ๋ฉ
ใใ๐ ์ฆ, ๋ถ๋ชจ ํด๋์ค๊ฐ ์์ ํด๋์ค์ ๋์ ๋ฐฉ์์ ์ ์ ์์ด๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ํตํด ์์ ํด๋์ค์ ์ ๊ทผํ ์ ์์
๐ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ ์์ ์ ๋ถ๋ชจ ํด๋์ค๋ ์์ ์ ๋ฉค๋ฒ ํจ์๋ฐ์ ์ ๊ทผํ ์ ์์ผ๋, ์คํ ์์ ์ ๋์ ๋ฐ์ธ๋ฉ์ด ์ผ์ด๋ ๋ถ๋ชจ ํด๋์ค๊ฐ ์์ ํด๋์ค์ ๋ฉค๋ฒ ํจ์์ ์ ๊ทผํ์ฌ ํด๋น ํจ์๋ฅผ ์คํํ ์ ์์ย
๐ ์ด๋ฏธ ์กด์ฌํ๋ ํด๋์ค๋ก ๋ถํฐ ๊ธฐ๋ณธ์ ์ธ ํน์ฑ(๋ฉค๋ฒ ํจ์ ๋ฐ ๋ณ์)์ ๋ฌผ๋ ค๋ฐ์ ์๋ก์ด ํด๋์ค๋ฅผ ์์ฑํ๋ ๊ฒ
โ Inheritance is when an object or class is based on another object or class, using the same implementation
โ Inheritance in most class-based object oriented languages is a mechanism in which one object acquires all the properties and behaviors of parent object
๐ ๊ด๋ จ์๋ ๋ฐ์ดํฐ์ ํจ์๋ฅผ ํ๋์ ๋จ์๋ก ๋ฌถ๋ ๊ฒ
ใใ๐ ์ฝ๋๋ฅผ ์ฌํ์ฉํ ์ ์์
๐ ๋ํ, ๊ฐ์ฒด๊ฐ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง ์ธ๋ถ์ ๊ฐ์ถ๋ ๊ฒ
ใใ๐ ์ฆ, ์ ๋ณด ์๋์ ์๋ฏธ๋ฅผ ํฌํจํ๊ณ ์์
๐ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์์ ์ ์ ๋ณด๋ฅผ ์จ๊ธฐ๊ณ ์์ ์ ์ฐ์ฐ ๋ง์ ํตํด ์ ๊ทผ์ ํ์ฉํ๋ ๊ฒ
๐ ๋ฉ์๋๋ฅผ ํตํด์๋ง ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์, ๊ฐ์ฒด ์์ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์๋ชป ์กฐ์๋๋ ๊ฒ์ ๋ง์์ค
โ getter, setter๋ ์ ๋ณด ์๋์ด๋ผ๋ ํน์ฑ์ ์ ๋ณด์ฌ์ฃผ๊ณ ์์
๐ SOLID
ใใ๐ ๋จ์ผ ์ฑ
์ ์์น(Single Responsibility Principle) : ๊ฐ์ฒด๋ ๋จ ํ๋์ ์ฑ
์๋ง ๊ฐ์ ธ์ผ ํจ
ใใใใโ ๋จ์ผ ๋ชจ๋ ๋ณ๊ฒฝ์ ์ด์ ๋ ์ค์ง ํ๋๋ฟ์ด์ด์ผ ํจ ; ์ฌ์ด ์ ์ง๋ณด์๋ฅผ ์ํ์ฌ
ใใ๐ ๊ฐ๋ฐฉ-ํ์ ์์น(Open Closed Principle) : ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋๋ก ์ค๊ณ๋์ด์ผ ํจ
ใใ๐ ๋ฆฌ์ค์ฝํ ์นํ ์์น(Liskov Substitution Principle) : ์์ ํด๋์ค๋ ์ต์ํ ์์ ์ ๋ถ๋ชจ ํด๋์ค์์ ๊ฐ๋ฅํ ํ์๋ ์ํํ ์ ์์ด์ผ ํจ
ใใ๐ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น(Interface Segregation Principle) : ์ธํฐํ์ด์ค๋ฅผ ํด๋ผ์ด์ธํธ์ ํนํ๋๋๋ก ๋ถ๋ฆฌ์ํค๋ผ๋ ์ค๊ณ ์์น
ใใ๐ ์์กด ์ญ์ ์์น(Dependency Inversion Principle) : ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ ๋ ๋ณํํ๊ธฐ ์ด๋ ค์ด ๊ฒ, ๊ฑฐ์ ๋ณํ๊ฐ ์๋ ๊ฒ์ ์์กดํ๋ผ๋ ๊ฒ
๐ ์์ค์ฝ๋ ํ์ผ์ ์คํ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์ฐ์ถ๋ก ๋ง๋๋ ๊ณผ์
๐ ์์ 4๊ฐ์ง ๊ณผ์ (P โก๏ธ C โก๏ธ A โก๏ธ L)์ ๊ฑฐ์นจ
โ ์ปดํ์ผ์ ๋น๋ ๊ณผ์ ์ ์ผ๋ถ
๐ ์ ์ฒ๋ฆฌ๊ธฐ ๊ตฌ๋ฌธ(#์ผ๋ก ์์ํ๋ ๊ตฌ๋ฌธ)์ ์ฒ๋ฆฌํ๋ ์ญํ // .cpp โก๏ธ .i
โ A Preprocessor is a program that processes its input data to produce output that is used as input to another program
๐ ๊ณ ์์ค์ ์ธ์ด๋ฅผ ์ด์
๋ธ๋ฆฌ์ด๋ก ๋ณํํ๋ ์ญํ // .i โก๏ธ .s
โ A Compiler is a computer program that translates computer code written in one programming language into another language
๐ ์์ ํ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ์ญํ // .s โก๏ธ .o
โ An Assembler program creates object code by translating combinations of mnemonics and syntax for operations and addressing modes into their numerical equivalents
๐ ์ฌ๋ฌ ๊ฐ์ ์ค๋ธ์ ํธ ํ์ผ๋ค์ ํฉ์ณ์ฃผ๋ ์ญํ // .o โก๏ธ .exe
๐ Linker is a computer program that takes one or more object files generated by a compiler and combines them into a single executable file, etc
๐ ์ฌ๋์ด ์ดํดํ๋ ์ธ์ด๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ธ์ด๋ก ๋ฐ๊พธ์ด์ฃผ๋ ๊ณผ์
๐ ๊ณ ๊ธ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ํ ์ค์ฉ ์ฝ์ด ๋ด๋ ค๊ฐ๋ฉฐ ์คํํ๋ ํ๋ก๊ทธ๋จ
๐ ์ปดํ์ผ์ ๋ฐ์ํ๋ ์๋ฌ, ์ฃผ๋ก syntax ์ค๋ฅ๋ก ์ธํด ๋ฐ์ํ๋ ์๋ฌ
๐ ํ๋ก๊ทธ๋จ ์คํ์ ๋ฐ์ํ๋ ์๋ฌ, ์ฃผ๋ก ๋
ผ๋ฆฌ์ ์ค๋ฅ๋ก ์ธํด ๋ฐ์ํ๋ ์๋ฌ
๐ ๋
ผ๋ฆฌ์ ์ค๋ฅ ; Divide by Zero, Infinite Loop, Out of Bounds ๋ฑ
๐ Code
ใใ๐ ์์ฑํ ์์ค์ฝ๋๊ฐ ๋ค์ด๊ฐ๋ ํ
์คํธ ์์ญ
ใใโ ์คํ ํ์ผ์ ๊ตฌ์ฑํ๋ ๋ช
๋ น์ด๋ค์ด ์ฌ๋ผ๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
ใใ๐ ํจ์, ์ ์ด๋ฌธ, ์์ ๋ฑ์ด ์ด๊ณณ์ ์ง์ ๋จ
๐ Data
ใใ๐ ํ๋ก๊ทธ๋จ์ ์์๊ณผ ๋์์ ํ ๋น๋๊ณ , ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋์ด์ผ ์๋ฉธ๋๋ ์์ญ
ใใ๐ ์ ์ญ๋ณ์์ static ๋ณ์๊ฐ ์ด๊ณณ์ ํ ๋น
๐ Heap
ใใ๐ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ ๋น/ํด์ ํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
ใใ๐ ๋ฐ ํ์์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋จ
ใใ๐ ์ด ๊ณต๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋นํ๋ ๊ฒ์ ๋์ ํ ๋น์ด๋ผ๊ณ ํจ
๐ Stack
ใใ๐ ํ๋ก๊ทธ๋จ์ด ์๋์ผ๋ก ์ฌ์ฉํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ
ใใ๐ ์ปดํ์ผ ํ์์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋จ
ใใ๐ ํจ์ ํธ์ถ์ ์์ฑ๋๋ ์ง์ญ ๋ณ์์ ๋งค๊ฐ๋ณ์๊ฐ ์ด๊ณณ์ ์ ์ฅ๋จ
ใใ๐ ํจ์ ํธ์ถ์ด ์๋ฃ๋๋ฉด ์ฌ๋ผ์ง
โ ๏ธ Heap๊ณผ Stack์ ๊ฐ์ ๊ณต๊ฐ์ ๊ณต์
โ ๏ธ Heap์ ๋ฎ์ ์ฃผ์๋ถํฐ ๋์ ์ฃผ์๋ก ํ ๋น๋๋ฉฐ, Stack์ ๋์ ์ฃผ์์์ ๋ฎ์ ์ฃผ์๋ก ํ ๋น๋๋ ๋ฐฉ์
โ ๏ธ ๊ฐ ์์ญ์ด ์๋ ๊ณต๊ฐ์ ์นจ๋ฒํ๋ ์ผ์ด ๋ฐ์ํ ์ ์์
โ ๏ธ ์ด๋ฅผ, Heap Overflow, Stack Overflow
โ ๏ธ Stack ์์ญ์ด ํฌ๋ฉด ํด์๋ก Heap ์์ญ์ด ์์์ง๊ณ , ๋ฐ๋๋ ๋์ผํจ
๐ Overflow : ์ฉ๋์ด ๋์ณ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ
๐ Stack
ใใ๐ ํ ๋ฐฉํฅ์ผ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๋นผ๋ ๋จ์ํ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ์คํ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์์
ใใ๐ ๋ฐ๋ผ์, ์คํ ํ ๋น์ ๋ง์ ์๊ฐ์ ํ์๋ก ํ์ง ์์
ใใ๐ ์ฆ, ๋ฐ์ดํฐ ์ก์ธ์ค ์๋๊ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์์
ใใ๐ But, ํ์ ํ ๋นํ ๋๋ง๋ค ์ ์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์๋์ง ํ์ธํ ํ์ ํ ๋น์ ์ฒ๋ฆฌํ๋ ๋์ ์ธ ๊ตฌ์กฐ
ใใ๐ ์ด๋ฌํ ๊ณผ์ ์ ์คํ๋ณด๋ค ๋ณต์กํ๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ ์ค๋ฒํค๋(Overhead)๊ฐ ๋ฐ์
ใใ๐ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๋ ์ข์ ์ฑ๋ฅ์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ๋๋๋ก ๊ฐ ํ์
์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์
ใใ๐ ์คํ์ ํฌ๊ธฐ ์ ํ์ด ์์ด ํ๊ณ๋ฅผ ์ด๊ณผํ์ฌ ์ฝ์
ํ ์ ์๋ค๋ ๋จ์
๐ Heap
ใใ๐ ํ๋ก๊ทธ๋จ์ ํ์ํ ๊ฐ์ฒด์ ๊ฐ์๋ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ ์์ ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ ์ฅ์
ใใ๐ ํ ๋น ํ ํด์ ํ์ง ์์ผ๋ฉด Memory Leak ๋ฐ์ํ๋ค๋ ๋จ์
๐ ์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ํ๋์ ๋ณ์๋ฅผ ๊ณต์ ํ๊ณ ์ ํ ๋ ์ฐ์ด๋ ๋ณ์
๐ compile ํ์์ ์ฃผ์ ๋ฐ ํฌ๊ธฐ๊ฐ ๊ฒฐ์
โ ์ด ๋ณ์๋ ๊ฐ๊ฐ์ ๊ฐ์ฒด์ ๋ฉค๋ฒ๋ก ์กด์ฌํ๋ ๊ฒ์ด X
โ ์ ๊ทผํ ์ ์๋ ๊ถํ์ด ๋ถ์ฌ๋๋ ๊ฐ๋
๐ O(n^2)
๐ stable sort
๐ in-place sort
โ 13 7 9 3 โก๏ธ 7 13 9 3 โก๏ธ 7 9 13 3 โก๏ธ 7 9 3 13
โ 7 9 3 13 โก๏ธ 7 3 9 13 โก๏ธ 3 7 9 13 โก๏ธ 3 7 9 13
โ 2๊ฐ์ฉ ์ง์ , swap
๐ code
void bubblesort()
{
for (int i = n - 1; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (arr[j] > arr[j + 1]) swap(arr[j], arr[j + 1]);
}
}
}
๐ O(n^2) // Best์ผ ๊ฒฝ์ฐ O(n)
๐ stable sort
๐ in-place sort
๐ ๊ฑฐ์ ์ ๋ ฌ์ด ๋์ด ์์ ๊ฒฝ์ฐ ๋น ๋ฆ
๐ ๋น๊ต ์ฐ์ฐ ํ์๊ฐ ํ์ฐํ ์์์ง๊ธฐ ๋๋ฌธ์
โ 13 7 9 3 โก๏ธ 13 7 9 3 โก๏ธ 7 13 9 3
โ 7 13 9 3 โก๏ธ 7 9 13 3 โก๏ธ 7 9 13 3 โก๏ธ 3 7 9 13
โ ํ ๊ณณ ๊ธฐ์ค ์ ๋ ฌ, ์์ ์๊ฒ ๋ง๋ ์์น์ insert
void insertionsort()
{
for (int i = 1; i < n; i++)
{
int key = arr[i];
int j;
for (j = i - 1; j >= 0; j--)
{
if (arr[j] > key) arr[j + 1] = key;
else break;
}
arr[j + 1] = key;
}
}
๐ O(n^2)
๐ unstable sort // 2 2 1 3
๐ in-place sort
โ 13 9 7 3 โก๏ธ 13 9 7 3 โก๏ธ 13 9 7 3
โ 3 9 7 13 โก๏ธ 3 9 7 13 โก๏ธ 3 7 9 13
โ ํ๋ ๊ธฐ์ค, ์ ์ธ min/max ์ฐพ์ ํ swap
void selectionsort()
{
for (int i = 0; i < n - 1; i++)
{
int minidx = i;
for (int j = i + 1; j < n; j++)
{
if (arr[j] < arr[minidx]) minidx = j;
}
swap(arr[i], arr[minidx]);
}
}
๐ O(nlogn)
๐ stable sort
๐ not in-place sort
โ 7 2 9 4 โก๏ธ 7 2 | 9 4 โก๏ธ 7 | 2 | 9 4
โ 2 7 | 9 4 โก๏ธ 2 7 | 9 4 โก๏ธ 2 7 | 9 | 4
โ 2 7 | 4 9 โก๏ธ 2 4 7 9
โ ๋จผ์ ๋ฐ์ผ๋ก ๋๋๊ณ , ํ์ ๋ณํฉ
โ ๋ณํฉ ์ ๋น๊ตํ๋ฉฐ ์์์ ๋ง๊ฒ & temp ๋ฐฐ์ด์ด ํ์(not in-place)
void merge(int l, int m, int r)
{
int i = l;
int j = m + 1;
int k = l;
while (i <= m && j <= r)
{
if (arr[i] <= arr[j])
{
temp[k] = arr[i];
i++;
}
else
{
temp[k] = arr[j];
j++;
}
k++;
}
while (i <= m)
{
temp[k] = arr[i];
i++;
k++;
}
while (j <= r)
{
temp[k] = arr[j];
j++;
k++;
}
for (int x = l; x <= r; x++)
{
arr[x] = temp[x];
}
}
void mergesort(int l, int r)
{
if (l < r)
{
int mid = (l + r) / 2;
mergesort(l, mid);
mergesort(mid + 1, r);
merge(l, mid, r);
}
}
๐ O(nlogn) // Worst์ผ ๊ฒฝ์ฐ O(n^2)
๐ unstable sort
๐ in-place sort
โ 3 7 8 1 5 9 6 10 2 4
โ 3 โ7โ 8 1 5 9 6 10 2 โ4โ
โ 3 โ7โ 8 1 5 9 6 10 โ2โ 4
โ 3 โ2โ 8 1 5 9 6 10 โ7โ 4
โ 3 2 โ8โ 1 5 9 6 10 โ7โ 4
โ 3 2 โ8โ โ1โ 5 9 6 10 7 4
โ 3 2 โ1โ โ8โ 5 9 6 10 7 4
โ 3 2 โ1โ โ8โ 5 9 6 10 7 4
โ 1 2 โ3โ โ8โ 5 9 6 10 7 4
โ 1 โโ2โโ | 3 | 8 โ5โ 9 6 10 7 โ4โ
โ โฆ
โ 3๊ฐ์ ํฌ์ธํฐ(p, l, r), l > r ๋๋ ์๊ฐ swap(p, r)
void quicksort(int start, int end)
{
if (start >= end) return;
int key = start;
int l = start + 1;
int r = end;
while (l <= r)
{
while (arr[l] <= arr[key] && l <= end)
{
l++;
}
while (arr[r] >= arr[key] && r > start)
{
r--;
}
if (l > r) swap(arr[key], arr[r]);
else swap(arr[l], arr[r]);
}
quicksort(start, r - 1);
quicksort(r + 1, end);
}
๐ O(nlogn)
๐ unstable sort
๐ in-place sort
โ 3 7 8 1 5 9 6 10 2 4 โก๏ธ 1 2 6 3 4 9 8 10 7 5
โ 1 2 6 3 4 9 8 10 7 5 โก๏ธ 5 2 6 3 4 9 8 10 7 1
โ 5 2 6 3 4 9 8 10 7 | 1 โก๏ธ 2 3 6 5 4 9 8 10 7 | 1
โ 2 3 6 5 4 9 8 10 7 | 1 โก๏ธ 7 3 6 5 4 9 8 10 2 | 1
โ 7 3 6 5 4 9 8 10 | 2 1 โก๏ธ โฆ
โ index ์์ผ๋ก parent์ ๋น๊ต ํ swap โก๏ธ heapify
โ heapify ํ root์ end_index swap, end_index - 1๊น์ง ๋ค์ heapify
โ priority_queue์ ์๋ฆฌ
void heapify(int num)
{
for (int i = 2; i <= num; i++)
{
int idx = i;
int p_idx = i / 2;
while (p_idx >= 1)
{
if (arr[idx] > arr[p_idx])
{
swap(arr[idx], arr[p_idx]);
idx /= 2;
p_idx /= 2;
}
else break;
}
}
}
void heapsort()
{
heapify(n);
for (int i = n; i >= 2; i--)
{
swap(arr[1], arr[i]);
heapify(i - 1);
}
}
๐ O(n) ~ O(n^2) // Avg O(n^1.5)
๐ stable sort
๐ in-place sort
๐ ์ฝ์
์ ๋ ฌ์ ๋ณด์ํ ์๊ณ ๋ฆฌ์ฆ
๐ ์ฝ์
์ ๋ ฌ์ ์์๋ค์ด ์ฝ์
๋ ๋, ์ด์ํ ์์น๋ก ์ด๋ // ์ฝ์
์ ๋ ฌ์ ์ต๋ ๋ฌธ์ ์
๐ ๋ฐ๋ผ์, ๊ฑฐ์ ์ ๋ ฌ์ด ๋์ด ์์ ๊ฒฝ์ฐ ๊ฐ์ฅ ๋น ๋ฆ
๐ code
void shellsort(int p[], int n)
{
int s, j = 0;
for (int h = 1; h < n; h = 3 * h + 1)
{
s = h; // find h maxsize
}
for (int h = s; h > 0; h = h / 3) // h decrease, h๋ size ๊ฐ๋
{
for (int i = h + 1; i <= n; i++)
{
int v = p[i]; // ํ๋ ๊ธฐ์ค
j = i;
while (j > h && p[j - h] > v) // ๊ธฐ์ค๋ณด๋ค ํฐ ๊ฒ์ด h์นธ ์์ ์๋ค๋ฉด
{
p[j] = p[j - h]; // swap
j = j - h; // h์นธ ์์ผ๋ก
}
p[j] = v; // v go to p[j]
}
}
}
๐ O(n+k) // k : ์ ๋ ฌ ์ ์ค ๊ฐ์ฅ ํฐ ๊ฐ
๐ stable sort
๐ not in-place sort
๐ ๋์ ํฉ technic์ ์ด์ฉํ ์๊ณ ๋ฆฌ์ฆ
โ ์ ๋ ฌํ๋ ์ซ์๊ฐ ํน์ ํ ๋ฒ์ ๋ด์ ์์ ๋ ๊ฝค ์ ์ฉํ sort
โ k๊ฐ ๋๋ฌด ํฌ๊ฑฐ๋ ์ ํฉํ์ง ์์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ฉด ๋งค์ฐ ๋นํจ์จ์
โ ๋ํ, ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ์ฌํ ์ ์์
โ code (pseudo)
void countingsort(A, B, C, min, max)
{
for (i = min; i <= max; i++) C[i] = 0; // ์ด๊ธฐํ
for (i = 0; i < A.size; i++) C[A[i]]++; // ex) ํด๋น ์ ์ ๊ฐ์ + 1
for (i = min + 1; i <= max; i++) C[i] += C[i - 1]; // ๋์ ํฉ
for (i = A.size - 1; i >= 0; i++) // ex) A ์ญ์์ผ๋ก ๋ง๋ ์๋ฆฌ ์ฐพ์ B์ ํ ๋น & ํด๋น ์ ์ ๊ฐ์ - 1
{
B[C[A[i]]] = A[i];
C[A[i]]--;
}
}
๐ O(d(n+k))
๐ must be stable
๐ not in-place sort
โ k๋ 10 (0-9) or 26 (a-z) โฆ
โ code
void Radix_Sort()
{
int Radix = 1;
while (true) // d ๊ณ์ฐ (์ต๋ ์๋ฆฌ์)
{
if (Radix >= Max_Value) break; // Max_Value๋ ๋ฐฐ์ด ์ค ์ต๋๊ฐ
Radix = Radix * 10;
}
for (int i = 1; i < Radix; i = i * 10) // 1์ ์๋ฆฌ๋ถํฐ 10์ฉ ๊ณฑํ๋ฉด์ ์ต๋์๋ฆฟ์ ๊น์ง ๋ฐ๋ณต
{
for (int j = 0; j < MAX; j++) // ๋ชจ๋ ๋ฐฐ์ด ํ์
{
int K;
if (Arr[j] < i) K = 0; // ๋ง์ฝ ํ์ฌ ๋ฐฐ์ด ๊ฐ ํด๋น ์๋ฆฟ์๋ณด๋ค ์์ผ๋ฉด 0
else K = (Arr[j] / i) % 10; // ๊ทธ๊ฒ ์๋๋ผ๋ฉด ๋ฐฐ์ด ๊ธฐ์ ์ฝ์
Q[K].push(Arr[j]); // Queue์ ์์ฐจ ์ ์ฅ
}
int Idx = 0;
for (int j = 0; j < 10; j++) // Queue์ ์ ์ฅ๋ ๊ฐ๋ค ์์ฐจ์ ์ผ๋ก ๋นผ๋ด๊ธฐ
{
while (Q[j].empty() == 0) // ํด๋น Index๋ฒํธ์ Queue๊ฐ ๋น ๋ ๊น์ง ๋ฐ๋ณต
{
Arr[Idx] = Q[j].front(); // ํ๋์ฉ ๋นผ๋ฉฐ ๋ฐฐ์ด์ ๋ค์ ์ ์ฅ
Q[j].pop();
Idx++;
}
}
}
}
๐ Big-O notation์ ๋๋ต์ ์ธ ์ธก์ ๋ฐฉ๋ฒ
๐ ํ๊ท ์ ์ผ๋ก ์ฑ๋ฅ์ ์ธก๋ฉด์์ Quick์ด ๋ ์ฐ์
๐ Heapify, n์ด ํฌ๋ฉด ํด์๋ก ์ด ๊ณผ์ ์ด ๊ฝค ์ํฅ์ ๋ฏธ์น๊ธฐ์ Quick์ด ์ฐ์
๐ Big-O natation : ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ๋๋ต์ ์ผ๋ก ํ๊ธฐํ๋ ๋ฐฉ๋ฒ
๐ Big-O notation์ ๋๋ต์ ์ธ ์ธก์ ๋ฐฉ๋ฒ
๐ ํ๊ท ์ ์ผ๋ก ์ฑ๋ฅ์ ์ธก๋ฉด์์ Quick์ด ๋ ์ฐ์
๐ not in-place, ๋ถํ ๋ฐ ๋ณํฉ ๊ณผ์ ์ด ๊ฝค ์ํฅ์ ๋ฏธ์น๊ธฐ์ Quick์ด ์ฐ์
๐ ์ ๋ ฌ์ ์ค๋ ์ ๋ถํฐ ์ฐ๊ตฌ๋์๋ ๋ถ์ผ์ด๊ธฐ์ ๋งค์ฐ ๊ฐ์ ๋ Quick Sort๊ฐ C++ sort()๋ก ์ ๊ณต๋๊ณ ์์
โ Median-of-Three, random pivot, Insertion Sort์์ ์์ฉ(์ผ๋ฐ์ size ๊ธฐ์ค 200, ์์ผ๋ฉด Insert ํฌ๋ฉด Quick) ๋ฑ
๐ O(logn)
๐ ์์ ํ์์ ๋นํด ์๋์ ์ผ๋ก ๋น ๋ฆ
๐ left, right๋ก mid๋ฅผ ์ค์
๐ mid์ ํ์ํ๋ key ๊ฐ๊ณผ ๋น๊ต
๐ key ๊ฐ์ด mid๋ณด๋ค ํฌ๋ค๋ฉด, left = mid + 1
๐ key ๊ฐ์ด mid๋ณด๋ค ๋ฎ๋ค๋ฉด, right = mid - 1
๐ key ๊ฐ์ด mid์ ๊ฐ๋ค๋ฉด, ํ์ ์๋ฃ
โ sort๊ฐ ๋์ด ์๋ค๋ ๊ฐ์ ํ์ ํ์์ด ๊ฐ๋ฅํจ
โ linear search ํ๊ท ๋น๊ต ํ์ : (n + 1) / 2
โ linear search ํ๊ท ์๊ฐ ๋ณต์ก๋ : O(n)
๐ 0๊ณผ 1๋ก flag๋ฅผ ํ์ฉํ๋ technic
๐ ์งํฉ์ ์์๋ค์ ๊ตฌ์ฑ ์ฌ๋ถ๋ฅผ ํํํ ๋ ์ ์ฉํ technic
๐ ๋ณดํต AND, OR, XOR, NOT, ยซ(LS),ย ยป(RS) ์ฐ์ฐ์์ ์์ฃผ ์ฐ์
โ ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋น ๋ฅธ ์ํ์๊ฐ์ผ๋ก ํด๊ฒฐ์ด ๊ฐ๋ฅ
โ ์ผ๋ฐ์ ์ผ๋ก ์์์ ์๊ฐ ์์ ๊ฒฝ์ฐ์ ์ฌ์ฉ
โ 0๋ฒ, 3๋ฒ, 5๋ฒ visit / else not visit
โ 101001(2) โก๏ธ 41(10)์ ํ์ฉ
๐ ์ต๋จ ๊ฒฝ๋ก ํ์ ์๊ณ ๋ฆฌ์ฆ
๐ ํ๋์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ๋ ๊ทธ ์ด์ ๊น์ง ๊ตฌํ๋ ์ต๋จ ๊ฑฐ๋ฆฌ ์ ๋ณด๋ฅผ ์ด์ฉ
๐ Priority Queue๋ฅผ ํ์ฉํ์ฌ ๊ตฌํ์ด ๊ฐ๋ฅ
๐ ์ผ๋ฐ์ ์ผ๋ก ์์์ ์์ ๋ชฉ์ ์ง๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฐ์
๐ ์์ ๊ฐ์ค์น๊ฐ ํฌํจ๋๋ฉด X
๐ ์ต์ ๋น์ฉ์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ๊ตฌํํ๋ ๊ฒ
๐ Kruskal, Prim
๐ ์ต์ ๋น์ฉ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ์๊ณ ๋ฆฌ์ฆ
๐ ๊ฐ์ ์ฐ์ ๋ฐ cycle ๋ฐฉ์ง์ ํน์ง์ด ์์
๐ Union-Find(Disjoint-Set)์ ์ด์ฉํ์ฌ cycle์ ๊ฒ์ฌํจ
๐ ์ต์ ๋น์ฉ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ์๊ณ ๋ฆฌ์ฆ
๐ ์์ ์ ์ ์ ์์์ผ๋ก, ์ ์ ์ฐ์ ๋ฐ cycle ๋ฐฉ์ง์ ํน์ง์ด ์์
๐ Tree๋ฅผ ํ์ฅํด๋๊ฐ๋ ์กฐ๊ฑด์ด MST์ ์ฐ๊ฒฐ๋ ์ ์ ์์ ์์ง ์ฐ๊ฒฐ์ด ์๋ ์ ์ ์ ๋ํด์ ํ์ฅ์ ์งํํ๋ฏ๋ก cycle์ด ๋ฐ์ํ์ง ์์
๐ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ ์ฌ๋ฌ ๊ฐ์ ํ์ ๋ฌธ์ ๋ก ๋๋์ด ํธ๋ ๋ฐฉ๋ฒ
๐ ๊ฐ์ ํ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ, ๊ฒฐ๊ณผ ๊ฐ์ ์ ์ฅํ์ฌ ๋จ ํ ๋ฒ๋ง ๊ณ์ฐํ๋๋ก ๊ตฌํ, ์ด๋ฅผ memoization
โ ์ฃผ๋ก, ์ ํ์์ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
๐ ์ฌ๊ท๋ฅผ ์ด์ฉํ๋ Top-down, ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํ๋ Bottom-Up ๋ ๊ฐ์ง์ ๋ฐฉ์์ด ์์
โ Bottom-Up ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ๋ ๊ฒ์ด ๊ถ์ฅ๋จ
๐ ์คํ์ ํฌ๊ธฐ๊ฐ ํ์ ๋์ด ์์ผ๋ฏ๋ก, ์์คํ
์ ์ฌ๊ท๋ฅผ ์ด์ฉํ ๊ฒฝ์ฐ ๋ถ๋ฆฌํ ์ ๋ฐ์ ์์
๐ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅํ์ง ์๋ ์ ํ ์๋ฃ๊ตฌ์กฐ
๐ ์ฆ, ๋์ ์ธ ํฌ๊ธฐ์ ์ฝ์
/์ญ์ ์ ์ฉ์ด
๐ ์์๋ก ์ก์ธ์ค๋ฅผ ํ์ฉํ ์ ์์ด, ์ฒซ ๋ฒ์งธ ๋
ธ๋๋ถํฐ ์์ฐจ์ ์ผ๋ก ์์์ ์ก์ธ์ค ํ๋ฏ๋ก ์ ๊ทผ์ ์์ด ๋ถ๋ฆฌ
โ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ์ ํด์ ธ ์๊ณ , ์๋ก์ด ์์๋ฅผ ์ฝ์
ํ๋ ๊ฒ์ ๋น์ฉ์ด ๋ง์ด ๋ค๊ธฐ์ LinkedList๋ฅผ ์ฌ์ฉ
โ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๊ฐ ์์์ ํ์
๐ Array
ใใ๐ ํฌ๊ธฐ๊ฐ ์ ํด์ ธ ์์ผ๋ฉฐ(์์ ๋ถ๊ฐ), stack ์์ญ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
ใใ๐ ์ฝ์
๊ณผ ์ญ์ ์ ๋น์ฉ์ด ํฌ์ง๋ง ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ ์ ๊ทผ์ด ์ต์ ํ
ใใโ ์ฐ์์ ์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ํธ๋ฆฌ
ใใโ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐ์์ ์ผ๋ก ์๊ธฐ ๋๋ฌธ์ ํด๋น ์ฃผ์๊ฐ + (A * N)byte๋ก ์กฐํ
๐ List
ใใ๐ ํฌ๊ธฐ๊ฐ ๊ณ ์ ์ ์ด์ง ์์ผ๋ฉฐ, heap ์์ญ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
ใใ๐ ์ฝ์
๊ณผ ์ญ์ ์ ์ ํ ๋
ธ๋์ ์ฐธ์กฐ ๊ด๊ณ๋ง ์์ ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ํจ์จ์
ใใ๐ ์ฒซ ๋ฒ์งธ ๋
ธ๋๋ถํฐ ์์ฐจ์ ์ผ๋ก ์์์ ์ก์ธ์ค ํ๋ฏ๋ก ์ ๊ทผ์ ๋นํจ์จ์
ใใโ ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐ์์ ์ผ๋ก ์์ง ์๊ธฐ ๋๋ฌธ์ ํฌ์ธํฐ๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ๊ทธ๋งํผ ์๊ฐ์ด ์์๋จ
๐ ์ผ๋ฐ์ ์ธ ๋ฐฐ์ด์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ์ ์ฅ, But, ํฌ๊ธฐ๊ฐ ๊ณ ์ ์ ์ด์ง ์์
๐ Array์ ์ฅ๋จ์ ๊ณผ ๊ฐ์
๐ LIFO(Last In First Out) ํน์ง์ ๊ฐ์ง๊ณ ์๋ ์๋ฃ๊ตฌ์กฐ
๐ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ด ํ ๊ณณ(๋ฐฉํฅ)์ผ๋ก ์ด๋ฃจ์ด์ง
โ ์น ํ์ด์ง(๋์๊ฐ๊ธฐ, ๋์๊ฐ๊ธฐ Undo) ์ ํฉ
๐ FIFO(First In First Out) ํน์ง์ ๊ฐ์ง๊ณ ์๋ ์๋ฃ๊ตฌ์กฐ
๐ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ด ํ ์ชฝ ๋์ผ๋ก ์ด๋ฃจ์ด์ง
โ ๋ฒํผ์ ์ ์ฅ๋์ด ๋ค์ด์จ ์์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ ํฉ
๐ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ด ์๋ฐฉํฅ ๋ชจ๋ ๊ฐ๋ฅํ ์๋ฃ๊ตฌ์กฐ
โ ๊ตฌํ์ด ์ด๋ ค์ธ ๋ฟ, Queue & Stack ๋ชจ๋์ ํน์ฑ์ ๊ฐ์ง๊ณ ์์
๐ ๊ฐ์ ๊ฐ์ง Node์ ์ด๋ค์ ์ฐ๊ฒฐํด์ฃผ๋ Edge๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ
๐ cycle์ด ์กด์ฌํ์ง ์์ผ๋ฉฐ, cycle์ด ์กด์ฌํ ๊ฒฝ์ฐ ๊ทธ๊ฒ์ graph ์๋ฃ๊ตฌ์กฐ
โ index๋ฅผ ํตํ ๋น ๋ฅธ ์ ๊ทผ์ ์ ํฉ
โ Tree ์ฐจ์ : ๊ฐ์ฅ ๋ง์ ์์ ๋
ธ๋ ๊ฐ์
๐ ๊ฐ์ ๊ฐ์ง Vertex์ ์ด๋ค์ ์ฐ๊ฒฐํด์ฃผ๋ Edge๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ
โ ๋ Vertex๋ฅผ ์ฐ๊ฒฐํ๋ Edge์ ๋ฐฉํฅ์ด ์๋ ๊ฒฝ์ฐ ๋ฐฉํฅ ๊ทธ๋ํ
โ ๋ Vertex๋ฅผ ์ฐ๊ฒฐํ๋ Edge์ ๋ฐฉํฅ์ด ์๋ ๊ฒฝ์ฐ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ
โ ๋ Vertex๋ฅผ ์ฐ๊ฒฐํ๋ Edge์ ๋น์ฉ์ด ์กด์ฌํ ๊ฒฝ์ฐ ๊ฐ์ค์น ๊ทธ๋ํ
๐ cycle ๊ด๊ณ์ data ๊ด๋ฆฌ์ ์ ํฉ
๐ ์ฐ๊ด๋ฐฐ์ด ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ key์ ๊ฒฐ๊ณผ ๊ฐ(value)๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
๐ ํด์ ํจ์๋ฅผ ๊ตฌํํ์ฌ ๋ฐ์ดํฐ ๊ฐ(key)์ ํด์ ๊ฐ์ผ๋ก Mapping
โ ์ ์ ์์์ผ๋ก ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ
โ index๋ฅผ ํตํ ๋น ๋ฅธ ์ ๊ทผ์ ์ ํฉ
โ key : ํด์ ํจ์์ input
โ hash : ํด์ ํจ์์ ๊ฒฐ๊ณผ๋ฌผ, ์ ์ฅ์(Slot)์์ value์ ๋งค์นญ๋์ด ์ ์ฅ
โ value : ์ ์ฅ์์ ์ต์ข
์ ์ผ๋ก ์ ์ฅ๋๋ ๊ฐ์ผ๋ก ํค์ ๋งค์นญ๋์ด ์์
๐ ์ข์ ํด์ ํจ์ ๊ตฌํ๋ฐฉ๋ฒ 5๊ฐ์ง
ใใ๐ 1) ์ ์ฐ๋ฒ : ๋ชจ๋๋ฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์, k mod M
ใใใใ๐ ์ผ๋ฐ์ ์ผ๋ก, M์ ๊ฐ์ ํด์ ํ
์ด๋ธ์ ํฌ๊ธฐ๋ณด๋ค ํฐ ์ ์ค์์ ๊ฐ์ฅ ์์ ์์๋ก ์ค์
ใใใใโ M์ด ์ง์๋ผ๋ฉด, k ์ง์์ผ ๋ ์ง์ ๋ฐ์, k ํ์์ผ ๋ ํ์ ๋ฐ์ํ์ฌ ๊ณ ๋ฅด๊ฒ ๋ถํฌ๋์ง X
ใใ๐ 2) ์ ๊ณฑ๋ฒ : key ๊ฐ์ ์ ๊ณฑํ ํ, key์ ๋นํธ ๊ฐ์ ์ค๊ฐ ๋ถ๋ถ์ ์ด์ฉํ๋ ๋ฐฉ์
ใใ๐ 3) ํด๋ฉ๋ฒ : key์ ๋นํธ ๊ฐ์ ์ฌ๋ฌ ๋ถ๋ถ์ผ๋ก ๋๋ ํ, ๊ฐ ๋ถ๋ถ์ ๋ชจ๋ ๋ํ ๊ฒฐ๊ณผ ๊ฐ or XOR ์ฐ์ฐ์ ๊ฒฐ๊ณผ ๊ฐ์ ์ฌ์ฉํ๋ ๋ฐฉ์
ใใ๐ 4) ๊ธฐ์ ๋ณํ๋ฒ : key ๊ฐ์ ์ง์๋ฅผ ๋ค๋ฅธ ์ง์๋ก ๋ณํ์ํจ ํ, ์ฃผ์ ํฌ๊ธฐ๋ฅผ ๋ฒ์ด๋ ๋์ ์๋ฆฟ์๋ฅผ ์ ๊ฑฐํ์ฌ ์ฃผ์ ํฌ๊ธฐ์ ๋ง๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
ใใ๐ 5) ๊ณ์ ๋ถ์๋ฒ : key ๊ฐ์ ์ด๋ฃจ๋ ์ซ์์ ๋ถํฌ๋ฅผ ๋ถ์ํ์ฌ ๋น๊ต์ ๊ณ ๋ฅด๊ฒ ๋ถํฌ๋์ด ์๋ ์๋ฆฌ ์๋ค์ ์ฃผ์ ํฌ๊ธฐ์ ๋ง๊ฒ ์กฐํฉํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
ใใใใโ ํ๋ฒ; ์
ํ๋
๋ ์๋ฏธํ๋ ์๋ฅผ ์ ์ธํ ๋๋จธ์ง ์
๐ ํด์ ์ถฉ๋; ๋ค๋ฅธ ๋ด์ฉ์ ๋ฐ์ดํฐ ๊ฐ์ด ํด์ ๊ฐ์ผ๋ก Mapping ํ์ ๋ ๊ฐ์์ง ์ํฉ
โ ๋๋ฌด ๋ง์ ํด์ ์ถฉ๋์ Hash Table์ ์ฑ๋ฅ์ ์ ํ
โ ํด์ ํจ์๋ฅผ ์ ์ ์ํ์ฌ ํด์ ์ถฉ๋์ ์ต์ํ ํด์ผํจ
๐ 1. Chaining : ํด์ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด LinkedList๋ก ๋ฐ์ดํฐ๋ค์ ์ฐ๊ฒฐํ๋ ๋ฐฉ์(Close Addressing)
๐ 2. Open Addressing
ใใ๐ 1) ์ ํ ํ์ : ๋ค์ ๋ฒ์ผ ํน์ ๋ช ๊ฐ๋ฅผ ๊ฑด๋๋ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ใใ๐ 2) ์ ๊ณฑ ํ์ : ์ ๊ณฑ๋งํผ ๊ฑด๋๋ด ๋ฒ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ใใ๐ 3) ์ด์ค ํด์ : ๋ค๋ฅธ ํด์ํจ์๋ฅผ ํ ๋ฒ ๋ ์ ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉ
ใใ๐ 4) ์ฌํด์ฑ : ํ
์ด๋ธ์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๊ณ , ๋์ด๋ ํฌ๊ธฐ์ ๋ง์ถฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ค์ ๋ค์ ํด์ฑ
๐ ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ , key๋ฅผ ์์๋ก ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
๐ ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ , key์ value๋ฅผ ์์๋ก ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
๐ ๋ฌธ์์ด์์ ๊ฒ์์ ๋น ๋ฅด๊ฒ ๋์์ฃผ๋ ์๋ฃ๊ตฌ์กฐ
๐ ์ด์ง ํ์์ ๋น ๋ฅธ ํ์์ด ๊ฐ๋ฅํ ์ฅ์ ๊ณผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋น ๋ฅธ ์ฝ์
๋ฐ ์ญ์ ๊ฐ ๊ฐ๋ฅํ ์ฅ์ ์ ๋์์ ๊ฐ๊ณ ์๋ ์๋ฃ๊ตฌ์กฐ
๐ ๊ฐ ๋
ธ๋ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ์์์ ์์ ๊ฐ์ ๊ฐ๊ณ ์๊ณ , ์ค๋ฅธ์ชฝ ์์์ ํฐ ๊ฐ์ ๊ฐ๊ณ ์์
โ ๊ฒ์ ๋ชฉ์ ์๋ฃ๊ตฌ์กฐ์ด๋ฏ๋ก ์ค๋ณต์ด ์๊ฑฐ๋ ๋ง์ ๊ฒฝ์ฐ ๋นํจ์จ์ , ์ค๋ณต์ด ์์ด์ผ ํจ
โ ์ค์ ์ํ๋ก ์ ๋ ฌ๋ ์์๋ฅผ ์ฝ์ ์ ์์
โ BST๋ ํ๋์ ๋ถ๋ชจ๊ฐ ๋ ๊ฐ์ ์์๋ฐ์ ๊ฐ์ง์ง ๋ชปํ๋ฏ๋ก, ๊ท ํ์ด ๋ง์ง ์์ ๋ ๊ฒ์ ํจ์จ์ด ์ ํ๊ฒ์ ๊ธ์ผ๋ก ๋งค์ฐ ๋จ์ด์ง
๐ B Tree๋ BST๋ฅผ ํ์ฅํ์ฌ ๋ ๋ง์ ์์์ ์๋ฅผ ๊ฐ์ง ์ ์๋๋ก ์ผ๋ฐํ ์ํจ ์๋ฃ๊ตฌ์กฐ
๐ ํธ๋ฆฌ์ ๊ท ํ์ด ํญ์ ๋ง๋ค๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์์
๐ B+ Tree๋ B Tree๋ฅผ ๊ฐ์ ํ ์๋ฃ๊ตฌ์กฐ
๐ B+ Tree์ leaf node๋ค์ LinkedList๋ก ์ฐ๊ฒฐ๋์ด ์์ด ์์ฐจ ๊ฒ์์ด ์ฉ์ดํจ
๐ B Tree๋ ๊ฐ ๋
ธ๋์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๋ฐ๋ฉด, B+ Tree๋ index ๋
ธ๋์ leaf ๋
ธ๋๋ก ๋ถ๋ฆฌ๋์ด ์ ์ฅ๋จ
ใใ๐ ์ค์ ๋ฐ์ดํฐ๋ leaf ๋
ธ๋์๋ง ์กด์ฌํ๋ฉฐ, index ๋
ธ๋์๋ ๋ฒ์ ์ ๋ณด๊ฐ ์กด์ฌํจ
โ ๊ฐ ๋
ธ๋๋ red or black์ ์์ ๊ฐ์ง
โ root node์ ์์ ํญ์ black
โ ๊ฐ leaf node์ ์์ black
โ ์ด๋ค ๋
ธ๋์ ์์ด red๋ผ๋ฉด ๋ ๊ฐ์ child node์ ์์ ๋ชจ๋ black
โ ๋ชจ๋ leaf node์์ root node๊น์ง ๊ฐ๋ ๊ฒฝ๋ก์์ ๋ง๋๋ black ๋
ธ๋์ ๊ฐ์๋ ๋์ผ
โ ์ฝ์
๋๋ ๋ชจ๋ ๋
ธ๋์ ์์ red, ํ์ง๋ง ์กฐ๊ฑด์ ๋ง์กฑํ๊ธฐ ์ํด ๊ฒฝ์ฐ์ ๋ฐ๋ผ recoloring ํน์ restructuring ์ ์ฉ
โ ์ด๋ฌํ ํน์ฑ์ ๋ง์กฑํ๋ BST๋ฅผ RB Tree
๐ Link
โ ๊ตฌํ ์๊ณ ๋ฆฌ์ฆ์ ์ฐจ์ด๊ฐ ์์
๐ Map์ RB Tree์ ๊ธฐ๋ฐ์ ๋๊ณ ์์
๐ HashMap์ Hash์ ๊ธฐ๋ฐ์ ๋๊ณ ์์
๐ Link
๐ ์์ ๋ณต์ฌ
ใใ๐ ์ต์ํ์ ๋ณต์ฌ๋ฅผ ํ์ฌ ์ธ์คํด์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ก ์์ฑ๋์ง ์์ผ๋ฉฐ ์ฃผ์๊ฐ์ ๋ณต์ฌํ์ฌ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํด
๐ ๊น์ ๋ณต์ฌ
ใใ๐ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ํต์งธ๋ก ๋ณต์ฌํ์ฌ ๋ ๊ฐ์ฒด๋ ์์ ํ ๋
๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง
๐ Link
๐ Link
๐ std ; C++ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชจ๋ ๊ฒ์ std๋ผ๋ namespace์ ์กด์ฌ
๐ namespace ; ๋ชจ๋ ์๋ณ์(๋ณ์, ํจ์)๊ฐ ๊ณ ์ ํ๋๋ก ๋ณด์ฅํ๋ ์ฝ๋ ์์ญ
๐ using ; ์ฌ์ฉํ๊ฒ ๋ค