이번엔 자료구조(Data Structure) 중 LIFO(Last In First Out) 구조인
스택(Stack)을 이용하여 한 쪽 벽면이 막힌 직선 형태의 주차장을 구현해보겠습니다
(실제로 이런 주차장은...-_-)
이를 구현하기 위해 먼저 파이썬(Python)의 리스트(List)를 이용합니다
파이썬(Python)의 리스트(List)는 조금 특이합니다
다른 언어들의 배열(Array)와 비슷한 개념이지만
배열(Array)은 같은 타입(Type)의 데이터(Data)의 모임이지만
파이썬(Python)의 리스트(List)는 다른 타입(Type)의 데이터를 묶을 수 있다는 점입니다
자, 그럼 구현을 위해 파이썬(Python)의 리스트(List)가
기본적으로 제공하는 함수(Function)에 대해 알아보겠습니다
함수 | 설명 |
append() | 리스트 제일 뒤에 항목을 추가 |
pop() | 리스트 제일 뒤의 항목을 빼내고, 빼낸 항목을 삭제 |
sort() | 리스트의 항목을 정렬 |
reverse() | 리스트 항목을 역순으로 정렬 |
index() | 지정한 값의 위치 반환 |
insert() | 지정한 위치에 값을 삽입 |
remove() | 리스트에서 지정한 값을 제거 |
extend() | 리스트 뒤에 리스트를 추가(리스트 + 리스트 연산과 동일) |
count() | 리스트에서 찾을 값의 개수를 반환 |
del() | 리스트에서 해당 위치의 항목을 삭제 |
len() | 리스트에 포함된 전체 항목의 개수 반환 |
## LIFO(Last In First Out) 구조의 주차장
parking = []
AREA_SIZE = 20
top, inCarNumber, outCarNumber = 0, "", ""
choice = 9
while(choice != 3) :
choice = input("1 : parking, 2 : out, 3 : stop ==> ")
if(choice == 1) :
if(choice >= AREA_SIZE) :
print("This parking lot is full")
else :
inCarNumber = raw_input("Input car's number ==> ")
parking.append(inCarNumber)
print(" %s Welcome! %d/%d is empty " % (parking[top], AREA_SIZE-(top+1), AREA_SIZE))
top += 1
elif(choice == 2) :
if(top<=0) :
print("This parking log is empty")
else :
outCarNumber = parking.pop()
print(" %s Good Bye! %d/%d is empty " % (outCarNumber, AREA_SIZE-(top-1), AREA_SIZE))
top -= 1
elif(choice == 3) :
break;
else :
print(" 1 : parking, 2 : out, 3 : stop ")
print("%d is left" % top)
print("Finish")
파이썬(Python)에서 제공하는 리스트(List)의 append() 함수와 pop() 함수만으로 구현이 완료되었습니다^^
※ 참고
파이썬(Python)에서는 조건문(if ~ elif ~ else)의 범위(range)를
들여쓰기로 파악하기 때문에 들여쓰기를 잘해주셔야합니다
추가로 파이썬(Pyton)에서 제공하는
튜플(Tuple), 딕셔너리(Dictionary)에 대해 알아보고 마치겠습니다
우선 튜플(Tuple)은 리스트(List)와 비슷하지만
리스트(List)는 [], 튜플(Tuple)은 ()를 이용한다는 점과 튜플은 읽기전용(Read Only)입니다
리스트(List)는 append(), del() 등의 함수를 통해 값의 추가 및 삭제가 가능하지만
튜플(Tuple)은 불가능합니다(But 튜플 자체는 삭제 가능)
다음으로 딕셔너리(Dictionary)는 {}로 묶여 있으며, 키(Key)와 값(Value)의 쌍으로 이루어집니다
(다른 언어에서는 이를 해시(Hash), 연관 배열(Associative array)로 부릅니다)
다음에는 이 딕셔너리(Dictionary)를 이용하여
간단한 프로그램을 만들어보겠습니다
'Python' 카테고리의 다른 글
[Python] 순환(Recursion)호출을 이용한 Fractal 프로그램 (0) | 2019.09.03 |
---|---|
[Python] 함수(Function)를 이용한 간단한 로또(Lotto)추첨 프로그램 (0) | 2019.08.27 |
[Python] 문자열 알아보기 (0) | 2019.08.27 |
[Python] 기초 문법(Syntax) 다지기 (0) | 2019.08.20 |
[Python] 간단한 사칙연산 프로그램 만들기 (0) | 2019.05.26 |