화폐 단위별 매수 알고리즘(정보처리기사) c언어

오늘은 화폐 단위별 매수 알고리즘에 관해서 한번 살펴보려고 합니다.

저도 공부하는 입장이기 때문에 잘못된 부분이 있을 수 있고, 또한 꼭 이 방법이 완벽하지는 않다는 것을 아셔야 됩니다.

화폐 단위별 매수 알고리즘은

화폐 단위별 매수 알고리즘

이런 식으로 출력이 되어야 합니다. 하지만.. 막상 코딩에 들어가니, 제가 실력이 초짜라 ;; 영 여기저기에서 헤매는 일을 겪게 되었네요.

그래도 어떻게든 코딩을 했는데, 결과는 이렇게 나왔습니다.

화폐 단위별 매수 알고리즘

역시나 초등학생 실력이 늘지 않는…. 그림판 실력입니다. 이 순서도는 화폐 단위별 매수 알고리즘입니다. 생각보다 복잡하게 보이는 것 같습니다.

간단하게 알고리즘 설명을 드리면, 배열 TM과 PM을 선언합니다. TM은 화폐단위별 총합이고요, PM은 화폐단위별입니다. 첫 번째 반복문에서는 각 배열은 초기화 시켜줍니다. 그리고, 사용자 이름 및 출장비를 입력받도록 합니다. 이름을 “QUIT”입력하였을 경우에는 출력과 동시에 프로그램이 종료되도록 해야 됩니다.(미쳐 이 부분을 못했네요..)

입력된 화폐 금액은 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 같은 경우에는 숫자 오만 원, 만 원, 오천 원 등으로 나누는 화폐입니다.

그리고 마지막으로 총 화폐단위를 합해서 출력을 하는 식으로 갑니다.

다음은 실질적인 코딩입니다.

화폐 단위별 매수 알고리즘
화폐 단위별 매수 알고리즘
화폐 단위별 매수 알고리즘

뭐가 정신없이 많네요. 일단 구조체를 사용해서 이름을 저장할 수 있는 공간을 마련하였습니다. 화폐 단위도 함께 지정해야 되는데.. 첨에 짠 것을 수정하고 수정하고 하다 보니 엉망이 되어버린 ;;

웬만하면 순서도에 맞춰서 그대로 해보려고 하다가 이런 꼴이 되어버렸네요…

출력한 모습입니다. 음…. 잘 모르시겠죠? ;; 이름을 a, b로 간단하게 적었습니다. 또한 맨 오른쪽 숫자부터, 오만 원~일원까지 순서대로인데… 역시나 이쁘장하게 만들기보다는 핵심적인 부분만을 알기 위해서 그냥 그렇게 코딩을 짰지만… 코딩 길이도 생각보다 엄청 기네요.

Leave a Comment