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. 실행