[#86][자격증] 정보처리기사 실기 알고리즘 (화폐 매수 구하기)
정보처리기사 실기 알고리즘 (화폐 매수 구하기)
----------------------------정답----------------------------------
① 50000
② PM(K)
③ T - (PM(K) * M)
④ M/2
⑤ TM(K) + PM(K)
-------------------------------------------------------------------
▶ N="QUIT"일 때 TM(K) 출력하므로, TM(K)는 전체(누적) 화폐 매수(⑤ 답안 도출)
PM(K)는 인물 당 화폐 매수(② 답안 도출)
▶ T에는 (필요한 매수 * 가격)을 빼고 남은 돈 저장(③ 답안 도출)
T = T - (PM(T) * M)
▶화폐 단위 생각해보기 (①, ④답안 도출)
50,000
(/5)
10,000
(/2)
5,000
(/5)
1,000
(/2)
500
(/5)
100
(/2)
50
(/5)
10
(/2)
5
(/5)
1
C++구현
#include <iostream>
#include <string>
using namespace std;
int PM[11] = { 0 }, TM[11] = { 0 }, K, P, M, SW, T;
string N;
void countMoney(int t) {
//알고리즘 구현
for (K = 1; K <= 10; K++) {
PM[K] = t / M;
t = t - (PM[K] * M);
if (SW == 1) {
M = M / 5;
SW = 0;
}
else {
M = M / 2;
SW = 1;
}
}
cout << N << " " << T << " ";
for (K = 1; K <= 10; K++) {
cout << PM[K] << " ";
TM[K] = TM[K] + PM[K];
}
cout << "\n";
}
int main(){
while (1) {
cin >> N;
if (N=="QUIT") {
cout << "전체화폐매수 ";
for (K = 1; K <= 10; K++) {
cout << TM[K] << " ";
}
cout << "\n";
break;
}
else {
cin >> P;
}
T = P;
M = 50000;
SW = 1;
countMoney(T);
}
return 0;
}
| cs |
댓글
댓글 쓰기