728x90
반응형
복합 할당 연산자
[복합 할당 연산자]
- += : 값을 더하고 할당 > a += b 는 a = a + b
- -= : 값을 빼고 할당
- *= : 값을 곱하고 할당
- /= : 값을 나누고 할당
- //=: 값을 정수 나누기하고 할당
- %= : 나머지를 구하고 할당
- **= : 지수 연산 후 할당
문제
교환할 돈을 입력받아 500원, 100원, 50원, 10원의 갯수를 계산해서 출력
출력 예시: 교환할 돈을 입력하세요 >>> 3772
500원 짜리 ==> 7개
100원 짜리 ==> 2개
50원 짜리 ==> 1개
10원 짜리 ==> 2개
교환하지 못하는 돈 ==> 2원
풀이1
# 문제 풀이1
money = int(input("교환할 돈을 입력하세요 >>> "))
# money = 3772
print("현재 잔액:", money)
m_500 = money // 500 # 7개
mm_500 = 500 * m_500
money -= mm_500
print("잔액:", money)
m_100 = money // 100
mm_100 = 100 * m_100
money -= mm_100
print("잔액:", money)
m_50 = money // 50
mm_50 = 50 * m_50
money -= mm_50
print("잔액:", money)
m_10 = money // 10
mm_10 = 10 * m_10
money -= mm_10
print("잔액:", money)
m_non = money // 1
print("500원 짜리 ==> {0} 개".format(m_500))
print("100원 짜리 ==> {0} 개".format(m_100))
print("50원 짜리 ==> {0} 개".format(m_50))
print("10원 짜리 ==> {0} 개".format(m_10))
print("교환하지 못하는 돈 ==> {0} 개".format(m_non))
▶ 답이 잘 나오긴 하나, 코드가 너무 길어 줄일 필요가 있어 보인다.
풀이2
# 문제 풀이2
money = int(input("교환할 돈을 입력하세요 >>> "))
# money = 3772
print("현재 잔액:", money)
m_500 = money // 500 # 7개
mm_500 = 500 * m_500
money -= mm_500
print("잔액:", money)
m_100 = (money // 100) * 100
money -= m_100
print("잔액:", money)
m_50 = (money // 50) * 50
money -= m_50
print("잔액:", money)
m_10 = (money // 10) * 10
money -= m_10
print("잔액:", money)
m_non = money // 1
print("500원 짜리 ==> {0} 개".format(m_500))
print("100원 짜리 ==> {0} 개".format(int(m_100 / 100)))
print("50원 짜리 ==> {0} 개".format(int(m_50 / 50)))
print("10원 짜리 ==> {0} 개".format(int(m_10 / 10)))
print("교환하지 못하는 돈 ==> {0} 개".format(m_non))
▶ 기존의 코드 중 동전과 동전의 개수를 곱하여 출력되는 값을 표현하는 부분을 줄여서 보다 간결하게 하였으나, 여전히 길고 비효율적으로 보인다.
풀이3
# 문제풀이 3
money = int(input("교환할 돈을 입력하세요 >>> "))
# 남은 돈 출력
print("현재 잔액:", money)
# 동전 종류
coin_types = [500, 100, 50, 10]
# 각 화폐 단위 별로 개수 계산
currency_count = {}
for coin_type in coin_types:
count = money // coin_type
currency_count[coin_type] = count
money -= count * coin_type
print("잔액:", money)
# 남은 돈은 모두 1원으로 계산
m_non = money
# 결과 출력
for coin_type in coin_types:
print("{0}원 짜리 ==> {1} 개".format(coin_type, currency_count[coin_type]))
print("교환하지 못하는 돈 ==> {0} 개".format(m_non))
▶
- coin_types 라는 리스트를 만들고, for 문을 사용하여 반복하여 결과를 출력하도록 하였다.
- count: 금액을 coin_type으로 나눈 후 몫만 반환
- currency_count[coin_type] = count: 동전 개수 내에 coin_types 리스트 내의 값들이 순환하여 들어가며 count 변수에 입력된다.
- money -= count * coin_type: 금액은 count 변수와 coin_type 값을 곱한 값이 차감된다. (반복문 실행 시마다 계속 차감)
- 결과 출력 시에도 for 반복문을 사용하여 효율적으로 코드를 작성하였다.
선생님 답
선생님의 답은 생각보다 너무너무 간단했다. 스스로 기초가 많이 부족하다 느꼈다.
# 거스름돈 개수
money = int(input("교환할 돈을 입력하세요 >>> "))
# 변수 선언
c500 =0
c100 = 0
c50 = 0
c10 = 0
c500 = money // 500
money %= 500
c100 = money // 100
money %= 100
c50 = money // 50
money %= 50
c10 = money // 10
money %= 10
print("500원 짜리 ==> {0} 개".format(c500))
print("100원 짜리 ==> {0} 개".format(c100))
print("50원 짜리 ==> {0} 개".format(c50))
print("10원 짜리 ==> {0} 개".format(c10))
print("교환하지 못하는 돈 ==> {0} 개".format(money))
728x90
반응형
'[파이썬 Projects] > <파이썬 기초>' 카테고리의 다른 글
[파이썬] 파이썬 기초: 다양한 출력 포맷 (0) | 2025.01.15 |
---|---|
[파이썬] 파이썬 기초 - 랜덤 모듈 (0) | 2025.01.15 |
[Visual Studio Code] VS CODE 다운로드 (0) | 2025.01.13 |
[파이썬] 파이썬 기초: 함수 (보완) (0) | 2025.01.10 |
[파이썬] 시각화 - 타이타닉 데이터셋 활용 seaborn 실습 (0) | 2024.11.06 |