Data structures (with python) - 1. Array

2024. 1. 1. 19:00ใ†CS - Roadmap.sh/1. Data structures

Data structures (with python)


1. Array

๐Ÿ’ก Arrays store elements in contiguous memory locations, resulting in easily calculable addresses for the elements stored and this allows faster access to an element at a specific index.

๋ฐฐ์—ด์€ ์ธ์ ‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ์ €์žฅ๋œ ์š”์†Œ์˜ ์ฃผ์†Œ๋ฅผ ์‰ฝ๊ฒŒ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์–ด ํŠน์ • ์ธ๋ฑ์Šค์˜ ์š”์†Œ์— ๋” ๋น ๋ฅด๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Array 

- ์ธ๋ฑ์Šค ์กด์žฌ

- ๋ฐ์ดํ„ฐ ์œ„์น˜์— ์ง์ ‘์ ์ธ ์ ‘๊ทผ ๊ฐ€๋Šฅ

- ํ• ๋‹น๋œ ๊ณต๊ฐ„์€ ์—ฐ์†์ ์ž„ -> ์กฐํšŒ๊ฐ€ ๋น ๋ฅด๊ณ ,cache hit ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ

- ๋ฏธ๋ฆฌ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์•ผํ•˜๊ณ , ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ๊ฐ€ ๋ถˆํŽธ

 

List (in Commonly CS)

- ์ธ๋ฑ์Šค ์กด์žฌ, ๋ช‡๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ์ •๋„์ธ์ง€ ์˜๋ฏธํ•จ

- ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์—ฐ์†์ ์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Œ

- ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ๋‹ค์Œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์–ด ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ์‰ฌ์›€

- ๋™์ ์ด๋ฏ€๋กœ, ๋ฐฐ์—ด๊ณผ ๋‹ค๋ฅด๊ฒŒ ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์Œ

- ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์Œ, ์ง์ ‘์ ์ธ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€, ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐพ์•„์•ผํ•จ -> ํ™•์‹คํ•˜๊ฒŒ ์ •ํ•ด์ ธ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ฐฐ์—ด์ด ํšจ์œจ์ 

 

#1 ์ˆ˜์ •

python์—์„œ list ๋Š” ์ผ๋ฐ˜์  CS์˜ list์™€ ์ข€ ๋‹ค๋ฅธ๋ฐ, array ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š”๊ฒŒ ํŽธํ•˜๋‹ค.

python ์—์„œ List๋Š” array์™€ ๊ฐ™์€ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

1. ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋‹ด์„์ˆ˜ ์žˆ๋‹ค.

2. ๋™์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ ˆ๋œ๋‹ค.

3. ์ธ๋ฑ์‹ฑ๊ณผ ์Šฌ๋ผ์ด์‹ฑ์„ ์ง€์›, ํŠน์ • ์œ„์น˜์— ์‰ฝ๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

python ์—์„œ list๋Š” '๋ฐฐ์—ด(array)'์™€ '์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List)'์˜ ํŠน์„ฑ์„ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๋™์  ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„ ๋˜๋ฉฐ, ๋ฐฐ์—ด์˜ ํŠน์„ฑ์„ ๊ฐ€์ง€๋ฉด์„œ๋„ ํฌ๊ธฐ๊ฐ€ ๋™์ ์œผ๋กœ ์กฐ์ ˆ๋  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ, ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ํŠน์„ฑ์„ ๊ฐ€์ง„๋‹ค๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„ -> ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์šฉ์ดํ•˜๋‹ค๋Š” ์ .

 

๋”ฐ๋ผ์„œ, python์˜ list๋Š” 'array'๋กœ ์ดํ•ดํ•˜๋Š”๊ฒƒ์€ ๋ถ€์ •ํ™•ํ•˜๋ฉฐ, '๋™์  ๋ฐฐ์—ด'๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋” ์ •ํ™•ํ•˜๋‹ค.

python์˜ list๋Š” 'indexing'๊ณผ 'slicing'์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์ง์ ‘์ ์ธ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋Š” ์ผ๋ฐ˜์ ์ธ 'linked list'์˜ ํŠน์„ฑ๊ณผ๋Š” ๋‹ค๋ฅด์ง€๋งŒ, pyhton ์˜ list๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ '๋™์  ๋ฐฐ์—ด'๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

 

numbers = [1,2,3,4,5]

 

์ด๋Ÿฐ numbers๋ผ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋’ค, ํŠน์ • ์š”์†Œ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

ํŒŒ์ด์ฌ์˜ ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ,

numbers[2] ๋ผ๋ฉด '3'์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

print(numbers[2]) # 3

 

์ง์ ‘์ ์ธ ํŒŒ์ด์ฌ์—๋Š” array ๋ชจ๋“ˆ์ด ์กด์žฌํ•œ๋‹ค. list์™€ array์˜ ์ฐจ์ด๋ฅผ ๋ณด์ž.

# List
my_list = [1, "Hello", 3.14]

# Array
import array
my_array = array.array('i', [1, 2, 3, 4, 5])  # 'i'๋Š” integer๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

my_list ๋Š” ์ •์ˆ˜, ๋ฌธ์ž์—ด, ์‹ค์ˆ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ์š”์†Œ๋ฅผ ํฌํ•จ.

๋ฐ˜๋ฉด my_array๋Š” ๋‹จ์ผ ํƒ€์ž…์˜ ์š”์†Œ๋งŒ์„ ํฌํ•จํ•œ๋‹ค.

 

๋˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๋„ Array๊ฐ€ ๋” ํšจ์œจ์ ์ด๋‹ค.

-> ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๊ฐ’๋งŒ์„ ์ €์žฅํ•˜๋ฏ€๋กœ, ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ

my_array.append("Hello")  # ์˜ค๋ฅ˜

 

my_array ์— hello๋ผ๋Š” string ๊ฐ’์„ array์— ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•˜๋ฉด, array๊ฐ€ ์ •์ˆ˜ ํƒ€์ž…์˜ ๊ฐ’๋งŒ์„ ์ €์žฅํ•˜๋„๋ก ์„ ์–ธ ๋˜์—ˆ๊ธฐ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ

Array

- ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ๊ด€๋ จ

- ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๊ด€๋ จ๋œ ์˜ค๋ฅ˜ ๋ฐฉ์ง€

 

 

List
- ๋ฒ”์šฉ์ ์ธ ๋ฐ์ดํ„ฐ ๋‹ด๊ธฐ

- ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋“ค์„ ๋‹ด์„ ๋•Œ

 

728x90