#include <stdio.h> int coin[6]={0}; //가지고 있는 동전의 개수 [0]=500원 [1]=100원 [2]=50원 [3]=10원 [4]=5원 [5]=1원 int answer[6]={0}; //내야하는 동전의 개수 int won[6]={500, 100, 50, 10, 5, 1}; int price(int w); //동전 개수 맞추기 int main(void) { int w, i, result=0; //w=구입하려는 물건의 값 //입력 scanf(" %d", &w); for(i=0; i<6; i++) scanf(" %d", &coin[i]); //계산 price(w); for(i=0; i<6; i++) result+=answer[i]; //정답 출력 printf("%d\n", result); for(i=0; i<6; i++) printf("%d ", answer[i]); return 0; } int price(int w) { int sum=0, i, j, a, k, more, f; if(coin[5]>=(w%10)) //won[i]원의 개수가 물건의 값의 일의 자리 수보다 클 때 { sum=w%10; answer[5]=w%10; coin[5]-=w&10; } else //won[i]원의 개수가 물건의 값의 일의 자리 수보다 작을 때 { sum=w%10; answer[5]=(w%10)-5; coin[5]-=(w%10)-5; answer[4]++; coin[4]--; } for(i=4; i>=0; i--) { f=coin[i]; for(j=1; j<=f; j++) { a=sum+won[i]; if(a<=w) //물건 값보다 적거나 같은 경우 { sum+=won[i]; answer[i]++; coin[i]--; if(a==w) return 0; } else //물건 값보다 초과한 경우 { more=a-w; //초과한 금액 a-=more; for(k=i+1; k<6; k++) //초과한 금액만큼 최소한의 동전 개수로 빼내기 { if(won[k]<=more) { coin[k]+=more/won[k]; answer[k]-=more/won[k]; more-=(more/won[k])*won[k]; } if(more==0) break; } sum=a; answer[i]++; coin[i]--; if(a==w) return 0; } } } return 0; }
2018.02.24 11:22
정올 - 알고리즘 - 동전자판기(下)(1183)
조회 수 838 추천 수 0 댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | 글쓰기는 하루 5개, 댓글은 10개만 가능합니다. | 좋은아빠되기 | 2019.02.15 | 553 |
공지 | 키보드 화살표값 출력 | 좋은아빠되기 | 2016.11.19 | 1327 |
공지 | 원하는 좌표에 값 출력하기 | 좋은아빠되기 | 2016.11.19 | 2637 |
공지 | Python(파이썬) 학습 자료 PDF 1 | 좋은아빠되기 | 2014.12.10 | 10639 |
공지 | dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) | 좋은아빠되기 | 2014.06.07 | 4971 |
공지 | DEV-C++ 기본 코드 | 좋은아빠되기 | 2013.06.19 | 8567 |
공지 | 무료 C++ 컴파일러(윈도우용) DEV-C++ | 좋은아빠되기 | 2013.06.18 | 19211 |
공지 | 이클립스 C++ 설치 파일들 | 좋은아빠되기 | 2013.06.18 | 38112 |
509 | 회문 구하기 | killerjack | 2014.03.15 | 3192 |
508 | 화살표날아오기 플랫폼수하고 기차길이조정 | killerjack | 2014.02.08 | 1977 |
507 | 화살표 이동 | 박윤택 | 2013.11.30 | 2413 |
506 | 화살표 응용 | 박윤택 | 2013.11.30 | 1706 |
505 | 홀수면 n수까지 홀수 출력 짝수면 n수까지 짝수 출력(승민) | 승민 | 2016.08.20 | 464 |
504 | 홀수 짝수 for문(스민) | 승민 | 2016.03.05 | 554 |
503 | 핵맨 | 선우 | 2017.04.01 | 257 |
502 | 함수3-자가진단4 | 박윤택 | 2014.08.15 | 588 |
501 | 함수2 자가진단7 | 선우 | 2016.07.09 | 161 |
500 | 함수(승민) | 승민 | 2016.08.06 | 117 |
499 | 함수(승민) | 승민 | 2016.06.04 | 133 |
498 | 함수 1 자가진단 8 | 선우 | 2016.06.18 | 135 |
497 | 포인트 | 승민 | 2016.09.10 | 202 |
496 | 테두리(승민) | 승민 | 2016.11.12 | 176 |
495 | 테두리(승민) | 승민 | 2016.11.12 | 157 |
494 | 큰수작은수 나머지수 출력하기(승민) | 승민 | 2016.08.06 | 246 |
493 | 크림빵, 새우깡, 콜라 돈만큼 구입하는 경우의 수 구하기 | killerjack | 2014.02.22 | 4432 |
492 | 최대공약수 최소공배수 | killerjack | 2014.02.15 | 4338 |
491 | 최대공약수 최대공배수 고친거 | killerjack | 2014.02.22 | 2537 |