[HackerRank/C++] Cut the sticks
2023. 2. 7. 07:50ㆍ코딩테스트 해커랭크/Algorithms -Easy
막대의 길이값을 가지는 arr를 인자로 받는다
arr중 가장 작은 값으로 모든 막대를 나누고, 0이 아닌 막대의 갯수를 배열에 저장하며 모든 막대의 길이가 0일때까지 저장한 vector를 return 한다
vector<int> cutTheSticks(vector<int> arr)
{
vector<int> result;
result.push_back(arr.size());
while (true)
{
int min = INT_MAX;
int size = arr.size();
for (int i = 0; i < arr.size(); ++i)
{
if (min > arr[i] && arr[i] > 0)
min = arr[i];
}
for (int i = 0; i < arr.size(); ++i)
{
if (arr[i] != 0)
arr[i] -= min;
if (arr[i] == 0)
--size;
}
if (0 == size)
break;
result.push_back(size);
}
return result;
}
반환할 result vector를 만들고 현재 arr.size()의 값을 넣는다
반복을 돌며 가장 작은 값을 찾아 min에 저장하고, arr의 0이 아닌 모든 값에서 mix만큼 빼주며 값이 0일 경우 arr.size() 값에서 1 감소시킨다
만약 size가 0이 되면 break로 빠져나와 값을 return하고, 0이 아니면 현재 size를 result에 push_back 하고 0이 될때까지 반복한다
'코딩테스트 해커랭크 > Algorithms -Easy' 카테고리의 다른 글
| [HackerRank/C++] Jumping on the Clouds (0) | 2023.02.07 |
|---|---|
| [HackerRank/C++] Repeated String (0) | 2023.02.07 |
| [HackerRank/C++] Library Fine (0) | 2023.02.07 |
| [HackerRank/C++] Sherlock and Squares (0) | 2023.02.07 |
| [HackerRank/C++] Append and Delete (0) | 2023.02.06 |