๐ชก ์๋ฃ ๊ตฌ์กฐ๊ฐ ์ค์ํ ๊น๋ญ โ
์ ์ด ์ฌ๊ทธ๋ก์ฐ์ ใ๋๊ตฌ๋ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆใ์ ์ฝ์ผ๋ฉฐ ์ ๋ฆฌํ ๊ธฐ๋ก
์์ ์์ค
์ฝ๋ ํ์ง์ ๋ ๊ฐ์ง ์ถ โ
์ข์ ์ฝ๋๋ ๋จ์ํ โ๋์ํ๋ ์ฝ๋โ๋ง์ ์๋ฏธํ์ง ์๋๋ค.
์ฝ๋์ ํ์ง์ ๋ณดํต ๋ค์๊ณผ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ๊ฐํ ์ ์๋ค.
์ ์ง ๋ณด์์ฑ- ๊ฐ๋ ์ฑ / ์กฐ์ง / ์ฝ๋ ๋ชจ๋์ฑํจ์จ์ฑ- ์คํ ์๋ / ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์กฐ์ํ๋๋๊ฐ ์ฝ๋์ ์คํ ์๋์ ํฐ ์ํฅ์ ๋ฏธ์น๋ค.
์๋ฃ ๊ตฌ์กฐ โ
๋ฐ์ดํฐ: ์, ๋ฌธ์์ด์ฒ๋ผ ํ๋ก๊ทธ๋จ์์ ๋ค๋ฃจ๋ ๊ฐ์๋ฃ ๊ตฌ์กฐ: ๋ฐ์ดํฐ๋ฅผ ์กฐ์งํ๋ ๋ฐฉ๋ฒ
๊ฐ์ ๋ฐ์ดํฐ๋ผ๋ ์ด๋ค ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋๋์ ๋ฐ๋ผ ์ฝ๋์ ์ฑ๋ฅ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง๋ค.
๋ฐฐ์ด (Array) โ
๋ฐฐ์ด์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ ๊ตฌ์กฐ๋ก, ๋ฐ์ดํฐ ์์๋ค์ ์์๋๋ก ์ ์ฅํ๋ค.
array = ["apples", "bananas", "cucumbers", "dates", "elderberries"];๋ฐฐ์ด์ ๋ค ๊ฐ์ง ๊ธฐ๋ณธ ์ฐ์ฐ โ
๋ค์ ๋ค ๊ฐ์ง ์ฐ์ฐ์ ํตํด ์๋ฃ ๊ตฌ์กฐ์ ์ฑ๋ฅ์ ๋ถ์ํ ์ ์๋ค.
์ฝ๊ธฐ: ์ธ๋ฑ์ค๋ก ๊ฐ ์ ๊ทผ๊ฒ์: ๊ฐ์ผ๋ก ์ธ๋ฑ์ค ์ฐพ๊ธฐ์ฝ์: ์ ๋ฐ์ดํฐ ์ฝ์์ญ์ : ๋ฐ์ดํฐ ์ ๊ฑฐ
์ฐ์ฐ์ ์๋ ์ธก์ โ
์ฐ์ฐ์ ๋น ๋ฅด๊ณ ๋๋ฆผ์ ํ๋จํ ๋๋ ์ค์ ์๊ฐ์ด ์๋ ํ์ํ ๋จ๊ณ ์๋ฅผ ์์์ผ ํ๋ค.
์ฐ์ฐ์ ์๋ ์ธก์ = ์ฐ์ฐ์ ์๊ฐ ๋ณต์ก๋ ์ธก์
โ ์ฝ๊ธฐ (Read) โ
ํน์ ์ธ๋ฑ์ค์ ์ ์ฅ๋ ๊ฐ์ ์ฐพ๋ ์ฐ์ฐ
๐ก ์ปดํจํฐ์ ํน์ง
- ์ปดํจํฐ๋ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ํ ๋ฒ์ ์ ๊ทผ ๊ฐ๋ฅ
- ๋ฐฐ์ด ํ ๋น ์ ์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ธฐ๋ก
- ๋ฐฐ์ด ํ ๋น ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ก
์์ ๊ฐ์ ํน์ง ๋๋ฌธ์ ๋ฐฐ์ด์ ์ด๋ค ์ธ๋ฑ์ค๋ ์ฆ์ ์ ๊ทผํ ์ ์๋ค.
- ์ฝ๊ธฐ ์ฐ์ฐ = 1๋จ๊ณ
โก ๊ฒ์ (Search) โ
๊ฐ์ ์ ๊ณต๋ฐ์ ๊ทธ ๊ฐ์ด ์ ์ฅ๋ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๋ ์ฐ์ฐ
์ ํ ๊ฒ์(Linear Search) โ
array = ["apples", "bananas", "cucumbers", "dates", "elderberries"];
// "elderberries" ๊ฒ์
// [0]: "apples" - 1๋จ๊ณ
// [1]: "bananas" - 2๋จ๊ณ
// [2]: "cucumbers" - 3๋จ๊ณ
// [3]: "dates" - 4๋จ๊ณ
// [4]: "elderberries" - 5๋จ๊ณ- ๋ฐฐ์ด์์ ํน์ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด ๋ฐฐ์ด์ ๊ฐ ์
์ ์์์๋ถํฐ ํ๋์ฉ ์กฐ์ฌํด์ผ ํ๋ค.
์ด์ฒ๋ผ ์ฒ์๋ถํฐ ๋๊น์ง ์์๋๋ก ๊ฐ์ ํ์ธํ๋ ๋ฐฉ์์์ ํ ๊ฒ์์ด๋ผ๊ณ ํ๋ค. - ์ฆ,
elderberries๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ ๋ชจ๋ ์ ์ ๊ฒ์ํด์ผ ํ๋ค. (5๊ฐ = 5๊ฐ์ ๋จ๊ณ)
๋ฐฐ์ด ์ค๊ฐ์ ์๋ ๊ฐ ๊ฒ์ โ
// "dates" ๊ฒ์
array = ["apples", "bananas", "cucumbers", "dates", "elderberries"];
// [0]: "apples" - 1๋จ๊ณ
// [1]: "bananas" - 2๋จ๊ณ
// [2]: "cucumbers" - 3๋จ๊ณ
// [3]: "dates" - 4๋จ๊ณ"dates"๋ ์ธ๋ฑ์ค 3์ ์๊ธฐ ๋๋ฌธ์ 4๋จ๊ณ ๋ง์ ์ฐพ์ ์ ์๋ค.
๊ฒ์์ ์ต์ ์ ๊ฒฝ์ฐ โ
์ต์ ์ ๊ฒฝ์ฐ๋ ์ฐพ๋ ๊ฐ์ด ๋ฐฐ์ด์ ๋งจ ๋ค์ ์๊ฑฐ๋, ๋ฐฐ์ด ์์ ์๋ ๊ฒฝ์ฐ์ด๋ค.
- ์ฐพ๋ ๊ฐ์ด ๋งจ ๋ค์ ์๋ ๊ฒฝ์ฐ: ๋ง์ง๋ง ์์๊น์ง ํ์ธํด์ผ ํ๋ค.
- ์ฐพ๋ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ: ๊ฐ์ด ์๋ค๋ ๊ฒ์ ์๊ธฐ ์ํด ๋ชจ๋ ์์๋ฅผ ๋๊น์ง ํ์ธํด์ผ ํ๋ค.
- ์ต์ ์ ๊ฒฝ์ฐ: N๊ฐ ์์ = N๋จ๊ณ
โข ์ฝ์ (Insert) โ
์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์ด์ ์ถ๊ฐํ๋ ์ฐ์ฐ, ์ฝ์ ์์น์ ๋ฐ๋ผ ํจ์จ์ฑ์ด ๋ฌ๋ผ์ง๋ค.
๋ฐฐ์ด ๋์ ์ฝ์ (๊ฐ์ฅ ํจ์จ์ ) โ
// ๋ฐฐ์ด ๋์ "figs" ์ถ๊ฐ
array = ["apples", "bananas", "cucumbers", "dates", "elderberries"];
array.push("figs"); // โ 1๋จ๊ณ๋ฐฐ์ด ์ค๊ฐ์ ์ฝ์ โ
// array[2]์ "figs" ์ฝ์
array = ["apples", "bananas", "cucumbers", "dates", "elderberries"];
// 1๋จ๊ณ: ๋ง์ง๋ง ์
์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
array = ["apples", "bananas", "cucumbers", "dates", "", "elderberries"];
// 2๋จ๊ณ: "dates" ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
array = ["apples", "bananas", "cucumbers", "", "dates", "elderberries"];
// 3๋จ๊ณ: "cucumbers" ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
array = ["apples", "bananas", "", "cucumbers", "dates", "elderberries"];
// 4๋จ๊ณ: "figs" ์ฝ์
array = ["apples", "bananas", "figs", "cucumbers", "dates", "elderberries"];
// โ 3๋จ๊ณ(์ด๋) + 1๋จ๊ณ(์ฝ์
) = 4๋จ๊ณ๋ฐฐ์ด ๋งจ ์์ ์ฝ์ (๊ฐ์ฅ ๋นํจ์จ์ ) โ
// array[0]์ "figs" ์ฝ์
array = ["apples", "bananas", "cucumbers", "dates", "elderberries"];
// ๋ชจ๋ ๊ธฐ์กด ์์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
// โ 5๋จ๊ณ(์ด๋) + 1๋จ๊ณ(์ฝ์
) = 6๋จ๊ณ- ์ต์ ์ ๊ฒฝ์ฐ: N๊ฐ ์์ = N + 1๋จ๊ณ
โฃ ์ญ์ (Delete) โ
๋ฐฐ์ด์์ ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ ์ ๊ฑฐํ๋ ์ฐ์ฐ
๐ก ์ญ์ ์ ํต์ฌ
์ญ์ ํ ๋น ๊ณต๊ฐ์ ์ฑ์ฐ๊ธฐ ์ํด ๋ค์ ๋ชจ๋ ์์๋ฅผ ํ ์นธ์ฉ ์ผ์ชฝ์ผ๋ก ์ด๋ํด์ผ ํจ
๋ฐฐ์ด ๋์์ ์ญ์ (๊ฐ์ฅ ํจ์จ์ ) โ
// ๋ฐฐ์ด ๋์ "elderberries" ์ญ์
array = ["apples", "bananas", "cucumbers", "dates", "elderberries"];
array.pop(); // โ 1๋จ๊ณ๋ฐฐ์ด ์ค๊ฐ์์ ์ญ์ โ
// array[2] cucumbers ์ญ์
array = ["apples", "bananas", "cucumbers", "dates", "elderberries"];
// 1๋จ๊ณ: "cucumbers" ์ญ์
array = ["apples", "bananas", "", "dates", "elderberries"];
// 2๋จ๊ณ: "dates" ์ผ์ชฝ์ผ๋ก ์ด๋
array = ["apples", "bananas", "dates", "", "elderberries"];
// 3๋จ๊ณ: "elderberries" ์ผ์ชฝ์ผ๋ก ์ด๋
array = ["apples", "bananas", "dates", "elderberries", ""];
// 1๋จ๊ณ(์ญ์ ) + 2๋จ๊ณ(์ด๋) = 3๋จ๊ณ๋ฐฐ์ด ๋งจ ์์์ ์ญ์ (๊ฐ์ฅ ๋นํจ์จ์ ) โ
array = ["apples", "bananas", "cucumbers", "dates", "elderberries"];
// ๋ชจ๋ ๋๋จธ์ง ์์๋ฅผ ์ผ์ชฝ์ผ๋ก ์ด๋ํด์ผ ํ๋ค.
// โ 4๋จ๊ณ(์ด๋) + 1๋จ๊ณ(์ญ์ ) = 5๋จ๊ณ- ์ต์ ์ ๊ฒฝ์ฐ: N๊ฐ ์์ = N๊ฐ ๋จ๊ณ
๋ฐฐ์ด ์ฑ๋ฅ ์์ฝ โ
| ์ฐ์ฐ | ์ต์ ์ ๊ฒฝ์ฐ |
|---|---|
| ์ฝ๊ธฐ | 1๋จ๊ณ |
| ๊ฒ์ | N๋จ๊ณ |
| ์ฝ์ | N + 1๋จ๊ณ |
| ์ญ์ | N๋จ๊ณ |
์งํฉ (Set) โ
์งํฉ์ ์ค๋ณต ๊ฐ์ ํ์ฉํ์ง ์๋ ์๋ฃ ๊ตฌ์กฐ (์ด ๊ธ์์๋ ๋ฐฐ์ด ๊ธฐ๋ฐ ์งํฉ์ ๋ค๋ฃธ)
- ์ฝ๊ธฐ, ๊ฒ์, ์ญ์ : ๋ฐฐ์ด๊ณผ ๋์ผํ ํจ์จ์ฑ์ ๊ฐ์ง๋ค.
์ฝ์ โ
์งํฉ์ ํต์ฌ ํน์ง์ ์ค๋ณต์ ํ์ฉํ์ง ์๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ฝ์ ์ ์ ๊ฒ์์ด ํ์๋ค.
set = ["apples", "bananas", "cucumbers", "dates", "elderberries"];
// "figs" ์ฝ์
// 1๋จ๊ณ - set[0]์์ "figs" ๊ฒ์
// 2๋จ๊ณ - set[1]์์ "figs" ๊ฒ์
// 3๋จ๊ณ - set[2]์์ "figs" ๊ฒ์
// 4๋จ๊ณ - set[3]์์ "figs" ๊ฒ์
// 5๋จ๊ณ - set[4]์์ "figs" ๊ฒ์
// 6๋จ๊ณ - ์งํฉ ๋์ "figs" ์ฝ์
// 5๋จ๊ณ(๊ฒ์) + 1๋จ๊ณ(์ฝ์
) = 6๋จ๊ณ- ์งํฉ์ ๋์ ์ ๊ฐ ์ฝ์ : N+1๋จ๊ณ
์ ๋ฆฌ โ
์๋ฃ ๊ตฌ์กฐ์ ์ฑ๋ฅ์ ์ธก์ ํ๋ ๊ฒ์ ์ฐ์ฐ์ ํ์ํ ๋จ๊ณ ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด๋ค.
๊ฐ์ ๋ฐ์ดํฐ๋ ์ด๋ค ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ ํํ๊ณ , ์ด๋ ์์น์์ ์ฐ์ฐ์ ์ํํ๋๋์ ๋ฐ๋ผ ํจ์จ์ฑ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง๋ค.
์ฐ์ต ๋ฌธ์ โ
1. ์์ 100๊ฐ๋ฅผ ํฌํจํ๋ ๋ฐฐ์ด์ด ์์ ๋, ๋ค์ ์ฐ์ฐ์ ๊ฑธ๋ฆฌ๋ ๋จ๊ณ ์๋ฅผ ๊ณ์ฐ โ
a. ์ฝ๊ธฐ
1๋จ๊ณ (๋ฐฐ์ด์ ์ด๋ค ์ธ๋ฑ์ค๋ ์ง์ ์ ๊ทผํ ์ ์๋ค.)b. ๋ฐฐ์ด์ ๋ค์ด ์์ง ์์ ๊ฐ ๊ฒ์
100๋จ๊ณ (๊ฐ์ด ๋ฐฐ์ด์ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ชจ๋ ์์๋ฅผ ๋๊น์ง ๊ฒ์ฌํด์ผ ํ๋ค.)c. ๋ฐฐ์ด ๋งจ ์์ ์ฝ์
101๋จ๊ณ (100๊ฐ ์์๋ฅผ ๋ชจ๋ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋(100๋จ๊ณ) + ์ฝ์ (1๋จ๊ณ))d. ๋ฐฐ์ด ๋งจ ๋ค์ ์ฝ์
1๋จ๊ณ (๋ฐฐ์ด์ ๋์ ์ถ๊ฐํ๋ฉด ๊ธฐ์กด ์์๋ฅผ ์ด๋ํ ํ์๊ฐ ์๋ค.)e. ๋ฐฐ์ด ๋งจ ์์์ ์ญ์
100๋จ๊ณ (์ญ์ (1๋จ๊ณ) + 99๊ฐ ์์๋ฅผ ๋ชจ๋ ์ผ์ชฝ์ผ๋ก ์ด๋(99๋จ๊ณ) = 100๋จ๊ณ)f. ๋ฐฐ์ด ๋งจ ๋ค์์ ์ญ์
1๋จ๊ณ (๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ฅผ ์ญ์ ํ๋ฉด ์ด๋ํ ์์๊ฐ ์๋ค.)2. ์์ 100๊ฐ๋ฅผ ํฌํจํ๋ ๋ฐฐ์ด ๊ธฐ๋ฐ ์งํฉ์ด ์์ ๋, ๋ค์ ์ฐ์ฐ์ ๊ฑธ๋ฆฌ๋ ๋จ๊ณ ์๋ฅผ ๊ณ์ฐ โ
a. ์ฝ๊ธฐ
1๋จ๊ณ (๋ฐฐ์ด ๊ธฐ๋ฐ ์งํฉ๋ ๋ฐฐ์ด์ฒ๋ผ ์ธ๋ฑ์ค๋ฅผ ์๊ณ ์์ผ๋ฉด ๋ฐ๋ก ์ ๊ทผํ ์ ์๋ค.)b. ๋ฐฐ์ด์ ๋ค์ด ์์ง ์์ ๊ฐ ๊ฒ์
100๋จ๊ณ (๊ฐ์ด ์งํฉ์ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ชจ๋ ์์๋ฅผ ๋๊น์ง ๊ฒ์ฌํด์ผ ํ๋ค.)c. ์งํฉ ๋งจ ์์์ ์ ๊ฐ ์ฝ์
201๋จ๊ณ (๊ฒ์ 100๋จ๊ณ + ์ด๋ 100๋จ๊ณ + ์ฝ์ 1๋จ๊ณ = 201๋จ๊ณ)d. ์งํฉ ๋งจ ๋ค์ ์ ๊ฐ ์ฝ์
101๋จ๊ณ (๊ฒ์ 100๋จ๊ณ + ์ฝ์ 1๋จ๊ณ)e. ์งํฉ ๋งจ ์์์ ์ญ์
100๋จ๊ณ (์ญ์ 1๋จ๊ณ + 99๊ฐ ์์๋ฅผ ๋ชจ๋ ์ผ์ชฝ์ผ๋ก ์ด๋ 99๋จ๊ณ = 100๋จ๊ณ)f. ์งํฉ ๋งจ ๋ค์์ ์ญ์
1๋จ๊ณ (๋ง์ง๋ง ์์๋ฅผ ์ญ์ ํ๋ฉด ์ด๋ํ ์์๊ฐ ์๋ค.)3. ์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ์ด์์ ๊ฒ์ ์ฐ์ฐ์ ์ฃผ์ด์ง ๊ฐ์ ์ฒซ ์ธ์คํด์ค๋ฅผ ์ฐพ๋๋ค. โ
ํ์ง๋ง ์ฃผ์ด์ง ๊ฐ์ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ์ฐพ์ ๋๊ฐ ์๋ค. ์๋ฅผ ๋ค์ด ๋ฐฐ์ด์ "apple"์ด ๋ช ๋ฒ ๋์ค๋์ง ์ธ๊ณ ์ถ๋ค. ๋ชจ๋ "apple"์ ์ฐพ๋ ๋ฐ ๋ช ๋จ๊ณ๊ฐ ๊ฑธ๋ฆด๊น? N์ ๋ํด ๋ตํ๋ผ.