Python

[Python] LIFO(Last In First Out) 주차장(Parking lot) 구현하기

구루싸 2019. 8. 21. 00:20
반응형
SMALL

이번엔 자료구조(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") 

LIFO(Last In First Out) 구조의 주차장 구현

파이썬(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)를 이용하여

간단한 프로그램을 만들어보겠습니다

 

반응형
LIST