SW Expert Academy-1970-Python

cosmos·2023년 5월 3일
0
post-thumbnail

코드

from typing import List

def solve(money: int) -> List[int]:
    dict = {
    	50000: 0, 10000: 0, 5000: 0, 1000: 0, 500:0, 100: 0, 50: 0, 10: 0
    }
    
    for key in dict:
        if  money >= key:
            dict[key] += money // key
            money %= key
    
    return list(dict.values())

T = int(input())

for test_case in range(1, T + 1):
    n = int(input())
    print(f'#{test_case}')
    print(*solve(n))

결과

ChatGPT Code

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

for t in range(1, T+1):
    N = int(input())  # 거슬러 주어야 할 금액
    
    # 돈의 종류
    money_types = [50000, 10000, 5000, 1000, 500, 100, 50, 10]
    
    # 필요한 개수를 저장할 리스트 초기화
    counts = [0] * len(money_types)
    
    # 거스름돈 계산
    for i, money in enumerate(money_types):
        counts[i] = N // money
        N %= money
    
    # 출력
    print(f'#{t}')
    for count in counts:
        print(count, end=' ')
    print()

ChatGPT 문제풀이

해당 문제는 거스름돈을 계산하는 문제입니다. 입력으로 주어지는 거슬러 주어야 할 금액 N에 대해 각 돈의 종류마다 필요한 개수를 계산하여 출력해야 합니다.

ChatGPT 문제풀이와의 비교

ChatGPT code: 스트 케이스의 개수 T와 각 테스트 케이스마다 거슬러 주어야 할 금액 N을 입력 받는 부분은 입력의 크기에 비례하여 O(1)의 시간이 소요됩니다.
거스름돈을 계산하는 부분에서는 돈의 종류에 대해 반복문을 돌며 필요한 개수를 계산하고, 거스름돈을 갱신합니다. 돈의 종류는 고정되어 있으므로 이 부분의 시간 복잡도는 상수입니다. 따라서 O(1)의 시간이 소요됩니다.
마지막으로, 계산된 돈의 개수를 출력하는 부분에서도 돈의 종류 수에 비례하는 반복문이 사용되지만, 이 역시 상수 시간이 소요되므로 O(1)입니다.
따라서 전체적인 코드의 시간 복잡도는 O(1)입니다.

내 코드: 전체적인 코드의 시간 복잡도는 O(1)

문제출처 & 깃허브

sw expert academy
Github

0개의 댓글