U E D R , A S I H C RSS

The Trip/곽세환

소�

  • 통과O
  • double형ì�˜ ì •ë°€ë�„때문ì—� 계ì†� 삽질했ì�Œ(예를 들어 9.03ì�˜ 경우 9.029999999999...으로 ìž…ë ¥ë�¨). ì§€ì‹�검색 ê²°ê³¼ 컴퓨터구조ìƒ� ì–´ì©” 수 없다고 함. 문ìž�열로 입력받는 방법ë§�ê³  좋ì�€ í•´ê²° 방법있으면 가르ì³�주세요.
  • double형 함부로 쓸 게 못ë�œë‹¤ëŠ”ê±¸ 뼈저리게 ëŠ�낌
  • 알고리즘 - í�‰ê· ê°’ì�„ 구한다ì�Œì—� í�‰ê· ê°’보다 ë§Žì�´ ì“´ ë�ˆ(í�‰ê· ê°’ 넘는 ë�ˆ - í�‰ê· ê°’)ì�´ ì�´ë�™í•˜ë©´ ë�¨

소스

~cpp 
#include <iostream>
using namespace std;

int main()
{
	int n;				// 학� 수
	int student[1000];	// 학�들� 사용한 �
	int total;			// �합
	int aver;			// �균
	int studentExchanged[1000];	// 공�하게 ��� 후� 학�들� 쓴 �
	int exchange;		// 전체 ���는 �
	int temp;
	int i, j;
	while (cin >> n && n != 0)
	{
		total = 0.0;
		exchange = 0.0;
		temp = 0.0;
		for (i = 0; i < n; i++)
		{
			double input;
			cin >> input;
			student[i] = (input + 0.005) * 100;
			total += student[i];
		}
		aver = total / n;
		for (i = 0; i < n; i++)
		{
			if (student[i] != aver)
				temp += student[i] - aver;
			studentExchanged[i] = aver;
		}
		for (i = 0; temp >= 1 && i < n; i++)
		{
			if (studentExchanged[i] == aver)
			{
				studentExchanged[i] = aver + 1;
				temp -= 1;
			}

		}

		// ì •ë ¬
		for (i = 0; i < n - 1; i++)
			for (j = i + 1; j < n; j++)
			{
				if (student[i] > student[j])
				{
					int temp;
					temp = student[i];
					student[i] = student[j];
					student[j] = temp;
				}
				if (studentExchanged[i] > studentExchanged[j])
				{
					int temp;
					temp = studentExchanged[i];
					studentExchanged[i] = studentExchanged[j];
					studentExchanged[j] = temp;
				}

			}
		

		for (i = 0; i < n; i++)
		{
			if (studentExchanged[i] > student[i])
			{
				exchange += studentExchanged[i] - student[i];
			}
		}
	
		cout.setf(ios::fixed);
		cout.precision(2);
		cout << "$" << (exchange / 100.0) << endl;
		
	}
	
	return 0;
}


댓글

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:13
Processing time 0.0036 sec