문제출처 : https://www.acmicpc.net/problem/19950
code
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int X1, Y1, Z1, X2, Y2, Z2, N, stick;
double end = 0, stick_len = 0;
vector<int> arr;
cin >> X1 >> Y1 >> Z1 >> X2 >> Y2 >> Z2;
cin >> N;
end = sqrt(pow(X2 - X1, 2) + pow(Y2 - Y1, 2) + pow(Z2 - Z1, 2));
for (int i = 0; i < N; i++)
{
cin >> stick;
arr.push_back(stick);
stick_len += stick;
}
sort(arr.begin(), arr.end(), greater<>());
if (stick_len < end)
cout << "NO";
else if (stick_len == end)
cout << "YES";
else
{
int temp=0;
for (int i = 1; i < N; i++)
temp += arr[i];
if (end>=arr[0]-temp)
cout << "YES";
else
cout << "NO";
}
return 0;
}
참고 블로그 : https://kim-yejin.tistory.com/41
문제도 이해했고, 어떻게 푸는지도 이해했는데, 구현을 어떻게 해야하나 고민하던 찰나 참고블로그에서 접근방식을 너무 잘 설명해주셔서 풀 수 있었다.
차근차근 노트에 접근방식을 곰곰히 생각해보면서 적어보니 좀더 쉽게느껴졌다.
요새 블로그 포스팅이 좀 느린데, 개학전에 부지런히 해야겠다 ㅠㅠ