본문 바로가기

대학교 과제/[알고리즘] 과제

[알고리즘] 3주차: 사칙연산 클래스와 선형리스트

반응형

사칙연산 클래스 실습

 

▪ 덧셈, 뺄셈 코드

# 덧셈, 뺄셈 class 생성
# 덧셈, 뺄셈 메소드 이항연산
# 이항을 메소드 self 속성으로 생성

class calculate:
  def setdata(self, arg1, arg2):
    self.first = arg1
    self.second = arg2

  def add(self):
    result = self.first + self.second
    return result

  def subtract(self):
    result = self.first - self.second
    return result

 

▪ 실행

# 클래스 객체 생성
peace = calculate()

# 데이터 삽입
peace.setdata(4, 8)

# 덧셈
peace.add()
# 12 출력

# 뺄셈
peace.subtract()
# -4 출력

 

▪ 특별 메소드의 사용과 사칙연산 코드

# __init__() : 특별 메소드 중 자동으로 실행 시켜주는 메소드

# 사칙연산
class calculate3:
  def __init__(self, arg1, arg2):
    self.first = arg1
    self.second = arg2

  def add(self):
    result = self.first + self.second
    return result

  def subtract(self):
    result = self.first - self.second
    return result
  
  def multi(self):
    result = self.first * self.second
    return result

  def division(self):
    result = self.first / self.second
    return result

 

▪ 실행

# 클래스 객체 생성
jeongwoo = calculate3(2, 11)

# 곱셈
jeongwoo.multi()
# 22 출력

# 나눗셈
jeongwoo.multi()
# 0.18181818181818182 출력

 

 

선형 리스트란

▪ 데이터를 일정한 순서로 나열한 자료구조
▪ 순차 리스트(Ordered List)라고도 함
▪ 선형 리스트는 입력 순서대로 저장하는 데이터에 적당

 

 

실습

▪ 선형 리스트 말들기

# 선형리스트 만들고, 데이터 삽입
BTS = []

def add_data(name):
  BTS.append(None)
  BTS[len(BTS)-1] = name

add_data("RM")
add_data("진")
add_data("슈가")
add_data("제이홉")
add_data("뷔")
add_data("지민")
add_data("정국")

print(BTS)

 

▪ 데이터 추가

# 선형 리스트에 새로운 데이터 추가
def append_data(name, postion):

  BTS.append(None) # 리스트 끝에 자리 생성

# 리스트의 끝에서 부터 넣고싶은 데이터의 위치까지 역순
  for i in range(len(BTS)-1, postion, -1): 
    BTS[i] = BTS[i-1] # 앞의 데이터를 뒤로 옮김
    BTS[i-1] = name # 앞에 데이터에 새로운 데이터를 씌움
  
  print(BTS)

# 함수 실행
append_data('정우', 1)

 

▪ 데이터 삭제

# 선형 리스트의 기존 데이터 삭제
# 데이터의 내용과 상관 없이 위치만 필요
def pop_data(postion):

# 리스트의 인덱스를 넘어갈 경우 에러!
  if postion > len(BTS):
    return print('ERROR')

  BTS[postion] = None # 원하는 위치의 데이터 삭제

# 원하는 위치에 데이터가 비었으니 그 위치부터 리스트의 끝까지 실행
  for i in range(postion, len(BTS)-1):
    BTS[i] = BTS[i+1] # 데이터를 앞으로 하나씩 당김

  BTS.pop() # 리스트 끝에 위치한 [None] 데이터 삭제
  print(BTS)

# 함수 실행
pop_data(1)
반응형