지난포스트 (deprecated)/Algorithm & Data Structure (deprecated)

python - 거스름돈 계산기(★☆☆☆☆)

.log('FE') 2018. 10. 29. 12:16
728x90
반응형

문제

 

 

cost원 짜리 물건을 사기위해 payment원을 냈다면
5만원권
1만원권
5천원권
1천원권
각각 몇장 씩 거스름돈을 주면되는지 구하라



풀이

 

def calculate_change(payment, cost):
# 코드를 작성하세요.
change = payment - cost
fifty_thousand_count = int(change / 50000)
print("%d원 지폐: %d장" % (50000, fifty_thousand_count))

 

change = change % 50000
ten_thousand_count = int(change / 10000)
print("%d원 지폐: %d장" % (10000, ten_thousand_count))

 

change = change % 10000
five_thousand = int(change / 5000)
print("%d원 지폐: %d장" % (5000, five_thousand))

 

change = change % 5000
ten_thousand = int(change / 1000)
print("%d원 지폐: %d장" % (1000, ten_thousand))

 

# 테스트
calculate_change(100000, 33000)
print()
calculate_change(500000, 378000)



또 다른 풀이

 

def calc_change(payment, cost):
change = payment - cost
print(change)
money = 50000
sw = 0
i = 0
thousand_count = []
thousand_count.append(int(change / money))


while money != 1000:
change = change - money * thousand_count[i]
i += 1
if sw == 0:
sw =1
money = money // 5
else:
sw = 0
money = money // 2
thousand_count.append(int(change / money))


print("{}{}장, {}{}장, {}{}장, {}{}장"
.format(50000,thousand_count[0],
10000,thousand_count[1],
5000,thousand_count[2],
1000,thousand_count[3]))


calc_change(100000, 33000)
calc_change(500000, 378000)



이건 차라리 첫번째 풀이방식이 나아보인다 가독성이나 여러가지 측면에서

또다른 방식으로 풀어볼수있을까 싶어서 변수를 활용해서 짜보았지만

어차피 지폐는 정해져있고 권수가 많은것도 아니라 첫번쨰 패턴이 훨씬 가독성이나 코드라인도 효율성있어보인다.

 

code-reading 블로그에 방문해 주셔서 환영합니다.
댓글은 모두 환영하니 많이 달아주세요.

728x90
반응형