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