이번 문제는 쉽겠지...?
일단 정답률이 70프로이기 때문에 호기롭게 도전해보았다,.
T = int(input())
money = list(map(int, input().split()))
coin = [25, 10, 5, 1]
change = []
remainder = []
for i in range(T):
num1 = money[i]//coin[0] # 4
num2 = money[i]%coin[0] # 24
change.append(num1) # change = [4]
remainder.append(num2) # remainder = [24]
for j in range(len(coin)-1):
num3 = remainder[j]//coin[j]
num4 = remainder[j]%coin[j]
change.append(num3)
remainder.append(num4)
print(*change)
처음에는 이렇게 접근해보았다.
뭔가 머리로는 생각이 나는데 구현을 못 하겠음..
잘하는 사람이 옆에서 가르쳐줬으면 좋겠다..
처음 입력 받은 값과 그 후 업데이트 되는 값 처리를 못해서 따로 처리했다,,,
시간 복잡도도 생각해야되서 함부로 반복문 못 쓰겠음..ㅋㅋ
암튼 당연히 틀렸고..
입력 받는 부분에 문제가 있단다..
strip을 사용하여 \n 제거해서 다시 작성.
아래 코드도 좀 더 깔끔하게 수정하였다.
T = int(input().strip())
money = list(map(int, input().split()))
coin = [25, 10, 5, 1]
result = []
for i in range(T):
change = []
amount = money[i]
for c in coin:
num = amount // c
amount %= c
change.append(num)
result.append(" ".join(map(str, change)))
print("\n".join(result))
그래도 같은 오류 발생..
money 부분도 수정하였다.
strip 함수 사용하고 입력 빨리 받기 위해
sys.stdin.readline()
이것도 사용
import sys
T = int(sys.stdin.readline().strip()) # 테스트 개수 입력
money = [int(sys.stdin.readline().strip()) for _ in range(T)] # 각 테스트 케이스의 금액 입력
coin = [25, 10, 5, 1]
for amount in money:
change = []
for c in coin:
num = amount // c # 해당 동전 개수 계산
amount %= c # 남은 금액 계산
change.append(num)
print(*change) # 공백을 기준으로 출력
최종 코드는 이렇다..
뭔가 알겠는데 모르겠는 그런 느낌,,,
(사실 지피티 살짝 사용함...)
이번에 크게 배운 건 입력 받은 문자열 처리?
문자열을 정수로 변환하고 개행 문자 제거하는 것 정도 일 거 같다..
sys.stdin.readline() vs input()의 비교
input() : 표준 입력을 읽고 개행 문자(\n) 제거 후 반환
sys.stdin.readline() : 표준 입력을 한 줄로 읽고 개행 문자 포함하여 반환
그러니까 input()은 내부적으로 더 복잡한 처리 과정을 거쳐 데이터를 받아 입력값을 버퍼(buffer)에서 읽고, Python 내부적으로 처리한 뒤 반환한다. 파이썬에서 추가적인 문자열 변환 과정이 포함된다.
반면 sys.stdin.readline()은 버퍼에서 바로 읽기 때문에 속도가 더 빠르다.
이론적으로는 이렇다고 한다.
많은 연산일수록 sys.stdin.readline()을 사용하면 좋을 거 같다.
#13. 백준 1158번 (python) (0) | 2025.04.24 |
---|---|
#12. 백준 2164번 (python) (0) | 2025.02.06 |
Optimization Methods in Finance Chapter 1.2 (2) | 2024.10.27 |
[파이썬] return과 print의 차이 (0) | 2024.08.26 |
#11. 백준 11718번 (python) (0) | 2024.08.10 |