전자레인지

108번뇌·2021년 5월 23일
0

#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을 리턴하게 한다.

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글

관련 채용 정보