어떤 자료구조와 알고리즘을 쓰느냐에 따라, 성능이 천지차이기 때문에 자료구조와 알고리즘은 매우 중요하다.
같은 종류의 데이터를 순차적으로 정리해 효율적으로 관리하기 위해 사용
파이썬의 배열은 예외적으로 다양한 종류의 데이터 저장 가능
#include <stdio.h>
int main(int argc, char *argv[])
{
char country[3] = "US";
printf("%c %c \n", country[0], country[1]);
printf("%s\n", country[2]);
return 0;
}
country='US'
print(country)
# 1차원 배열
data=[1,2,3,4,5]
print(data)
# 2차원 배열
data=[[1,2,3], [4,5,6], [7,8,9]]
print(data[0][0]) #1
print(data[0][1]) #2
print(data[2][0]) #7
큐란 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 자료구조이다.
import queue
# 일반적인 FIFO 정책
data_queue = queue.Queue()
data_queue.put("hi")
data_queue.put(3)
print(data_queue.qsize()) #2
print(data_queue.get())
print(data_queue.qsize()) #1
put
: enqueqsize
: 큐 사이즈get
: dequeimport queue
data_queue = queue.LifoQueue()
data_queue.put("hi")
print(data_queue.qsize())
data_queue.put("second")
print(data_queue.qsize())
print(data_queue.get()) #second
import queue
data_queue = queue.PriorityQueue()
data_queue.put((10, "ten"))
data_queue.put((3, 777))
data_queue.put((5, "five"))
print(data_queue.qsize())
print(data_queue.get()) #(3,777)
put(우선순위, 값)
queue_list = list()
def enqueue(data):
queue_list.append(data)
def dequeue():
data = queue_list[0]
del queue_list[0]
return data
for i in range(10):
enqueue(i)
print(len(queue_list))
print(dequeue()) #0
print(dequeue()) #1
def recursive(data):
if data < 0:
print("ended")
else:
print(data)
recursive(data-1)
print(data, "returned")
recursive(4)
4
3
2
1
0
ended
0 returned
1 returned
2 returned
3 returned
4 returned
data_stack = list()
data_stack.append(1)
data_stack.append(2)
print(data_stack) # [1, 2]
print(data_stack.pop()) #2
print(data_stack.pop()) #1
stack_list = list()
def push(data):
stack_list.append(data)
def pop():
data = stack_list[-1] # -1 : 맨끝 index
print(data)
del stack_list[-1]
return data
for i in range(10):
push(i)
pop() #9
pop() #8