본문 바로가기
프로그램

[파이썬] 문제 : 분기별 데이터 합계 및 세금 계산

by 오디세이99 2022. 11. 7.
728x90
반응형

 

 

다음과 같은 순서로 동작하는 코드 립니다.

# step1 : 데이터 만들기. [4,33,23,0,34,23,43,0...]

# step2 : 데이터에서 0으로 6개의 분기별 데이터로 분리

- [[6, 58, 2], [58, 27, 54, 9..],[],[],[]]

# step3 : 분기별 세금 계산하고 출력. 최대 세금 찾고 출력

import random

# step1 : 데이터 만들기. [4,33,23,0,34,23,43,0...]
data = []
for i in range(6):                          # 6개 분기
    size = random.randint(1, 20)            # 몇개의 수를 요소로 할지 결정. 1~20까지로 함. 20은 규정에는 없으나 너마 많지 않도록 함.
    for j in range(size):                   # 몇개 요소(분기별)인지로 반복
        data.append(random.randint(1, 99))   # 1~99까지 수 중 임의의 수로 분기별 데이터를 만들어 리스트(data)에 추가
    if i < 5:                                # 마지막이 아니면
        data.append(0)                        # 0을 추가. 0은 분기 구분용

print(data)                                 # 디버깅용. 어떤 데이터가 만들어 졌는지 확인용. 결과만 볼때는 주석(#)처리

# step2 : 데이터에서 0으로 6개의 분기별 데이터로 분리
quarter = []                                # 0으로 구분된 분기데이터 저장용 리스트 
tmp = []                                    # 분기 데이터만 임시로 가지고 있을 리스트
for i in range(len(data)):                 # data의 요소수 만큼 반복
    if data[i] != 0:                       # 값이 0 이 아니면 분기 데이터임
        tmp.append(data[i])                 # 임시분기데이터(tmp) 리스트에 값 추가
    else:                                   # 값이 0 이면 분기가 끝임. 
        quarter.append(tmp)                 # 임시로 가지고 있던 분기데이터를 진짜 분기별 데이터 리스트에 추가
        tmp = []                            # 임시분기데이터 리스트는 초기화해 다음 분기데이터를 보관 할 수 있도록 함

quarter.append(tmp)                         # 제일 마지막 분기데이터는 quarter에 추가가 되지 않기때문에 여기서 추가
print(quarter)                              # 디버깅용. 분기별 데이터 확인용. 결과만 볼때는 주석(#)처리

# step3 : 분기별 세금 계산하고 출력. 최대 세금 찾고 출력
max_tax = 0                                 # 최대 세금 보관 변수
max_quarter = ''                            # 최대 세금 분기명 보관 변수
for i in range(len(quarter)):              # 분기별 데이터 만큼 반복. 6개 분기
    d_sum = sum(quarter[i])                 # 리스트를 sum() 함수로 합계를 계산
    tax = d_sum * 0.1                       # 합의 10% 세감 계산. 0.1 곱하기
    q_name = str(i+1) + '분기'              # 분기명을 만듬
    if tax > max_tax:                       # 최대 세금을 찾기 위함
        max_tax = tax
        max_quarter = q_name
    print(f"{q_name} : {tax:0.1f}")         # 분기별 세귿 출력. 소수점 1자리까지만 출력

print(f"최대세금 : {max_quarter} = {max_tax:0.1f}")   # 최대세금 출력

결과

[6, 58, 2, 0, 58, 27, 54, 95, 20, 74, 78, 15, 65, 14, 38, 87, 37, 0, 43, 0, 21, 94, 53, 98, 65, 94, 81, 51, 10, 17, 21, 12, 53, 37, 54, 92, 15, 87, 51, 0, 36, 67, 0, 72, 8, 65, 79, 55, 16, 52, 6, 99, 99, 18, 62, 82]
[[6, 58, 2], [58, 27, 54, 95, 20, 74, 78, 15, 65, 14, 38, 87, 37], [43], [21, 94, 53, 98, 65, 94, 81, 51, 10, 17, 21, 12, 53, 37, 54, 92, 15, 87, 51], [36, 67]]
1분기 : 6.6
2분기 : 66.2
3분기 : 4.3
4분기 : 100.6
5분기 : 10.3
최대세금 : 4분기 = 100.6
728x90
반응형

댓글