카드 정렬하기
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
int s;
cin >> s;
int iResult(0);
vector<int> vTemp;
for (int i = 0; i < s; i++)
{
int iTemp;
cin >> iTemp;
vTemp.push_back(iTemp);
}
sort(vTemp.begin(), vTemp.end(), [](int a, int b) {
return a < b;
});
if (s < 3)
{
for (int i = 0; i < s; i++)
{
iResult += vTemp[i];
}
}
else
{
for (int i = 0; i < s; i++)
{
if (i == 0 || i == 1)
{
iResult += (s - 1)*vTemp[i];
}
else
{
iResult += (s - i)*vTemp[i];
}
}
}
cout<< iResult;
}
내가 한 코드인데 이 코드는 틀렸음.
왜냐면 한번 덧셈 이후 중간에 결과값들이 바뀌기 때문임.
이렇게 하면 계산이후 결과값들을 반영할 수 없음.
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int main(void)
{
int s;
cin >> s;
int iResult(0);
priority_queue<int, vector<int>, greater<int>> vTemp;
for (int i = 0; i < s; i++)
{
int iTemp;
cin >> iTemp;
vTemp.push(iTemp);
}
int iCnt(0);
while (1)
{
if (iCnt >= s - 1)
{
break;
}
int iTemp1 = vTemp.top(); vTemp.pop();
int iTemp2 = vTemp.top(); vTemp.pop();
iResult += (iTemp1 + iTemp2);
vTemp.push(iTemp1 + iTemp2);
iCnt++;
}
cout<< iResult;
return 0;
}
push할때 iResult를 하면 안됨.
Author And Source
이 문제에 관하여(카드 정렬하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@imalive77/카드-정렬하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)