오늘 또 다른 문제를 풀었는데, if문을 참 많이 사용하는 문제였다.
문제는 아래와 같다:
대강 이런 식으로 출력이 되어야 한다. USB 용량은 위와 같고, 메모리 타입도 여러가지이다. 배송료는 3만원 이상이면 무료이고 그 미만이면 3000이 추가되어야 한다.
문제를 읽고, 아 정말 if문이 많이 들어가는 코드겠구나라는 생각이 들었다.
일단 문제를 보고, 대강 손코딩으로 문제를 한 번 풀어봤다. 아래 필기에 적혀 있는 코드와 최종 실행 가능한 코드는 같지 않다. 그냥 코드를 컴퓨터에 작성하기 전에 한 번 브레인스토밍 겸? 써봤다.
(악필은 언제나 양해 바란다)
최종 코드는 아래에 작성해두었다.
usb_Memory=int(input("USB 메모리 용량(GB)을 입력하세요(128,64,32,16): "))
usb_MemoryType=input("USB 메모리 타입을 입력하세요(slide,cap,rotate): ")
usb_Amount=int(input("USB 메모리 개수를 입력하세요: "))
if usb_Memory==128:
totalAmount=45000
if usb_MemoryType=='slide':
totalAmount=totalAmount+2000
elif usb_MemoryType=='cap':
totalAmount=totalAmount+1000
print("USB 하나의 가격은 %d" % totalAmount)
totalAmount=totalAmount * usb_Amount
print("전체 USB 금액: %d" % totalAmount)
if totalAmount>=30000:
deliveryFee=0
print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount))
else:
deliveryFee=0
deliveryFee=deliveryFee+3000
print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount+deliveryFee))
elif usb_Memory==64:
totalAmount=32000
if usb_MemoryType=='slide':
totalAmount=totalAmount+2000
elif usb_MemoryType=='cap':
totalAmount=totalAmount+1000
print("USB 하나의 가격은 %d" % totalAmount)
totalAmount=totalAmount * usb_Amount
print("전체 USB 금액: %d" % totalAmount)
if totalAmount>=30000:
deliveryFee=0
print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount))
else:
deliveryFee=0
deliveryFee=deliveryFee+3000
print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount+deliveryFee))
elif usb_Memory==32:
totalAmount=16000
if usb_MemoryType=='slide':
totalAmount=totalAmount+2000
elif usb_MemoryType=='cap':
totalAmount=totalAmount+1000
print("USB 하나의 가격은 %d" % totalAmount)
totalAmount=totalAmount * usb_Amount
print("전체 USB 금액: %d" % totalAmount)
if totalAmount>=30000:
deliveryFee=0
print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount))
else:
deliveryFee=0
deliveryFee=deliveryFee+3000
print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount+deliveryFee))
elif usb_Memory==16:
totalAmount=8000
if usb_MemoryType=='slide':
totalAmount=totalAmount+2000
elif usb_MemoryType=='cap':
totalAmount=totalAmount+1000
print("USB 하나의 가격은 %d" % totalAmount)
totalAmount=totalAmount * usb_Amount
print("전체 USB 금액: %d" % totalAmount)
if totalAmount>=30000:
deliveryFee=0
print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount))
else:
deliveryFee=0
deliveryFee=deliveryFee+3000
print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount+deliveryFee))
코드를 다시 보니 뭔가 굉장히 비효율적으로 보인다. 이렇게 하지 않아도 뭔가 더 효율적이고, 더 짧게 작성하는 방안이 있을 것만 같다. 혹시나 있다면 댓글로 누가 알려주기 바란다. 아직 초보라 지적,조언 댓글은 언제나 환영하는 마음이다.