Python notes/Others

파이썬 예제코드) Group화 알고리즘 (+같은 값을 가진 튜플을 group화 하기)

성실한 나무 2021. 3. 26. 21:07

#1. 문제 해결

 1) 편리한 코딩을 위해서 fruit class 만들기

 2) fruit class 형태의 튜플들을 fruits 리스트에 넣기

 3) fruits 리스트를 name 순서대로 정렬하기

 4) 중복되는 name의 quantity를 합쳐서 group화 하고 그 결과 값을 groups 리스트에 넣기

 

#2. 코드 짜기

# class fruit 만들기
class fruit():  #class명은 fruit으로 아래 method(class 내 함수)로 정의
  def __init__(self, name, quantity): 
    self.name=name
    self.quantity=quantity

#fruit class를 활용해서 원소들을 만들어서 fruits list에 입력시킴
fruits=[fruit("banana",5), fruit("apple", 3), fruit("orange", 2), fruit("melon", 1), fruit("banana", 3), fruit("melon",5)]

##Group화 하기
#먼저, fruits 리스트를 name 순서대로 정렬하기
N=len(fruits)
for i in range(0,N-1):
  for j in range(i+1, N):
    if fruits[i].name>fruits[j].name:
      temp=fruits[i]; fruits[i]=fruits[j]; fruits[j]=temp #SWAP
for i in fruits:
  print(f"{i.name.rjust(10)}는 {i.quantity}개 있어요")

print("---------Group화-----------")
#그 다음, 중복되는 name의 quantity를 합쳐서 Group화 하기, groups 리스트에 새로운 데이터 넣기
groups=[]
subtotal=0
for i in range(N):
  subtotal=subtotal+fruits[i].quantity
  if i+1==N or fruits[i].name != fruits[i+1].name:
      groups.append(fruit(fruits[i].name, subtotal))
      subtotal=0
for i in groups:
  print(f"{i.name.rjust(10)}는 {i.quantity}개 있어요")
  

 

#3. 실행