SW Expert Academy-10505-Python

cosmos·2023년 5월 4일
0
post-thumbnail
post-custom-banner

코드

from typing import List

def money_unbalance(n: int, money: List[int]) -> int:
    average_money = sum(money) / n
    return sum([1 for x in money if x <= average_money])

T = int(input())

for test_case in range(1, T + 1):
    n  = int(input())
    money = list(map(int, input().split()))
    print(f'#{test_case} {money_unbalance(n, money)}')

결과

ChatGPT Code

T = int(input()) # 테스트 케이스의 수

for i in range(1, T+1):
    N = int(input()) # 정수의 개수
    incomes = list(map(int, input().split())) # 각 사람의 소득
    
    avg = sum(incomes) / N # 평균 소득
    count = len([x for x in incomes if x <= avg]) # 평균 이하인 소득을 가진 사람들의 수
    
    print("#{} {}".format(i, count)) # 결과 출력

ChatGPT 문제풀이

위 코드의 시간 복잡도는 O(N*T)입니다. 입력값으로 주어지는 정수의 개수를 N이라고 할 때, 리스트에 소득을 저장하는 부분은 O(N)의 시간이 소요됩니다. 그 후에는 리스트 내포를 이용하여 평균 이하의 소득을 가진 사람들의 수를 세는데, 이 또한 입력값의 크기에 비례하여 O(N)의 시간이 걸립니다. 따라서 전체적인 시간 복잡도는 O(N)입니다.

ChatGPT 문제풀이와의 비교

시간복잡도 서로 동일 -> 효율성 같다.

문제출처 & 깃허브

sw expert academy
github

post-custom-banner

0개의 댓글