#include <iostream>
#include <string>
using namespace std;
int iTemp;
int iarray[3] = { 300, 60, 10 };
int iAnswer[3] = { 0, };
int solve(int iSec)
{
while (1)
{
if (iOrder > 2) break;
if (0 != (iSec / iarray[iOrder]))
{
iAnswer[iOrder] = iSec / iarray[iOrder];
iSec = iSec % iarray[iOrder];
}
else
{
iOrder++;
}
}
if (iSec > 0)
{
return -1;
}
return 1;
}
int main(int argc, char* argv[])
{
cin >> iTemp;
int iResult = solve(iTemp);
if (iResult==1)
{
cout << iAnswer[0] << " " << iAnswer[1] << " " << iAnswer[2];
}
else
{
cout << -1;
}
return 0;
}
전형적인 탐욕 문제,
내림차순으로 배열 3짜리 정한다음, 300 60 10 순서로
반복문 돌린다.
몫이 0이 아닐시 -> 전체 숫자 몫으로 나누고 나머지로 변경
몫이 0일시 -> 나누어떨어지는 경우이므로 답Array 에 몫만큼 더하고 iOrder ++;
계속해서 나눴는데 최종으로 결과값이 0이 아닌경우에는 -1을 리턴하게 한다.