이 글은 제가 2016년 3월 25일에 작성한 내용을 일부 수정하여 다시 업로드 한 내용이다.
화폐 단위별 매수 알고리즘
그럼 지금 부터 화폐 단위별 매수 알고리즘에 관해서 한번 살펴보겠다. 필자도 공부하는 입장이기 때문에 잘못된 부분이 있을수 있고, 또한 꼭 이방법이 완벽하지는 않다는것은 참고하길 바란다.
화폐 단위별 매수 알고리즘은 아래 그림처럼 출력되는 구조이다.
![[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]](http://www.itopening.com/wp-content/uploads/2018/09/화폐-단위별-매수-알고리즘-1.jpg)
[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]
아래는 알고리즘 구성도이다.
![[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]](http://www.itopening.com/wp-content/uploads/2018/09/화폐-단위별-매수-알고리즘-2.jpg)
[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]
현재 알고리즘 구성도를 설명드리면, 배열 TM과 PM을 선언 한다. TM은 화폐단위별 총합이고, PM은 화폐단위별이다. 첫번째 반복문에서는 각 배열은 초기화 시켜준다.
그리고, 사용자 이름 및 출장비를 입력받도록 한다. 이름을 “QUIT”입력하였을 경우에는 출력과 동시에 프로그램이 종료되도록 해야된다.
[ads-m1]
입력된 화폐금액은 T 라는 임시 변수에 저장을 해놓고, 이 T라는 변수로 진행을 하도록 한다.
M=50,000 은 오만원이 최고 금액이니 선언하고, SW=1은 5로 나누는 부분으로 진행을 하도록 할때 사용 된다.
두번째 반복문은 실질적인 화폐단위별 계산하는 방법이다. 오만원, 만원 등의 개수가 몇개인지를 계산하는것이다.
PM(K)=T/M 같은 경우에는 내가 입력한 출장비와 오만원을 나눠서 떨어지는 값을 PM배열에 저장해놨다.
또한 그다음 줄 T=T-(PM(K)*M) 은 예를들어 52000원이면 2000원만 남도록 하기 위해서 만들어놓은 수식이다.
이렇게 10까지 반복적으로 오만원 ~ 일원까지 계속 나눠서 떨어질때까지 계산한다. 밑에 M=M/5 와 M=M/2 같은경우에는 숫자 오만원, 만원,오천원 등으로 나누는 화폐이다.
그리고 마지막으로 총 화폐단위를 합해서 출력을 하는식으로 간다.
c언어 코딩
뭐가 정신없이 많다. 일단 구조체를 사용해서 이름을 저장할수있는 공간을 마련하였다. 화폐 단위도 함께 지정해야되는데.. 처음에 짠것을 수정하고 수정하고 하다보니 엉망이 되어버린거 같다.
웬만하면 순서도에 맞춰서 그대로 해볼려고 하다가 만족스럽지 않은 코딩이 나와버리게 되었다.
![[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]](http://www.itopening.com/wp-content/uploads/2018/09/화폐-단위별-매수-알고리즘-6.jpg)
[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]