![article thumbnail image](https://blog.kakaocdn.net/dn/YAWiY/btqJV6jk6wv/59Chc1EnFyRUUi3CIq6xKk/img.png)
반응형
코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int count(const vector<int>& vInt, const int size)
{
int i, prev = vInt[0], cnt = 2;
for (i = 1; i < vInt.size(); ++i)
{
if (vInt[i] - prev >= size)
{
++cnt;
prev = vInt[i];
}
}
return cnt;
}
int main(void)
{
int n, c, i, mid, res, temp;
int left, right = 0;
cin >> n >> c;
vector<int> vInt(n);
for (i = 0; i < n; ++i)
{
cin >> vInt[i];
right += vInt[i];
}
sort(vInt.begin(), vInt.end());
left = vInt[0];
while (left <= right)
{
mid = (left + right) / 2;
if (count(vInt, mid) <= c)
{
res = mid;
right = mid - 1;
}
else
{
left = mid + 1;
}
}
cout << res - 1 << endl;
return 0;
}
출력 결과
채점 결과
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int count(const vector<int>& vInt, const int size)
{
int i, prev = vInt[0], cnt = 1;
for (i = 1; i < vInt.size(); ++i)
{
if (vInt[i] - prev >= size)
{
++cnt;
prev = vInt[i];
}
}
return cnt;
}
int main(void)
{
int n, c, i, mid, res, temp;
int left = 1, right = 0;
cin >> n >> c;
vector<int> vInt(n);
for (i = 0; i < n; ++i)
{
cin >> vInt[i];
right += vInt[i];
}
sort(vInt.begin(), vInt.end());
right = vInt[n - 1];
while (left <= right)
{
mid = (left + right) / 2;
if (count(vInt, mid) >= c)
{
res = mid;
left = mid + 1;
}
else
{
right = mid - 1;
}
}
cout << res << endl;
return 0;
}
해당 포스트는 'it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비' 강의를 수강하며 개인 백업용으로 메모하였습니다.
인프런: https://www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98#
it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비 - 인프런
알고리즘과 자료구조를 이용해 문제해결력을 기르는게 주 목적입니다. 초급 취업 ・ 이직 프로그래밍 언어 알고리즘 C++ 알고리즘 코딩 테스트 개발자취업 온라인 강의 알고리즘
www.inflearn.com
반응형