본문 바로가기
개발일지/Python

**파이썬 재귀 알고리즘으로 1년의 매출 증감액 표시 (재귀 알고리즘 기초원리)

by 다니엘의 개발 이야기 2022. 5. 22.
320x100

이번 것은 재귀알고리즘의 기초를 볼 수있는 기초 알고리즘과 같으므로

나에겐 매우 중요하다.

 

# 최소값 알고리즘2
# 재귀 알고리즘 (내가 나를 호출하는 방식)

# 다음은 A상사의 2021년 월별 매출을 나타내는 표이다.
# 재귀 알고리즘을 이용해서 1월 부터 12월 까지 전월대비 매출 증감액을
# 나타내는 프로그램을 만들어보자

# 재귀팁이 2개 있다. 그 두가지가 있기에 재귀적으로 작동이 되는것이다.

# 매출은 천원단위이다.
# 1월 - 12,000원
# 2월 - 13,000원
# 3월 - 12,500원
# 4월 - 11,000원
# 5월 - 10,500원
# 6월 - 98,000원
# 7월 - 91,000원
# 8월 - 91,500원
# 9월 - 10,500원
# 10월 - 11,500원
# 11월 - 12,000원
# 12월 - 12,500원

sales = [12000,13000,12500,11000,10500,98000,91000,91500,10500,11500,12000,12500]
print(len(sales))

def salesUpAndDown(ss):

    # 재귀2. 길이를 넘어서 계속 반복하면 범위 초과가 되기때문에 이걸로 제어해준다.
    if len(ss) == 1:
        return ss
    print(f'sales: {ss}')
    # 인덱스 0의 값을 제거하고 머금고 있는다.
    currentSalse = ss.pop(0)
    nextSales = ss[0]

    # 증감액을 구해주는 것
    increase = nextSales - currentSalse
    # 매출이 감소되었을때는 -가 자동으로 나오지만 +는 생략된다.
    # 이를 위해서 이 if문 2줄을 만들어준다.
    if increase >0 :
        # '+'는 문자인데 increase는 기본적으로 숫자이기때문에 스트링 처리를 해준다.
        increase = '+' + str(increase)
    print(f'매출 증감액: {increase}')

    # 1회에 지나지 않고 전체적으로 해야하지만
    # 여기까지만 있어서는 1회만 작동된다.

    # 재귀1. 따라서 이걸 써준다. 재귀반복을 위해서
    return salesUpAndDown(ss)

if __name__ == '__main__':

    salesUpAndDown(sales)
300x250