[HackerRank/C++] Equalize the Array
2023. 2. 7. 07:50ㆍ코딩테스트 해커랭크/Algorithms -Easy
배열 arr를 받을때, 같은 값이 가장 많은 값만 남기고, 나머지는 배열에서 삭제할때, 삭제할 배열의 인덱스 갯수를 return 한다
int equalizeArray(vector<int> arr)
{
int result = 0;
sort(arr.begin(), arr.end());
int temp = 1;
for (int i = 0; i < arr.size(); ++i)
{
if (arr[i] == arr[i + 1])
{
++temp;
}
else
{
if (result < temp)
{
result = temp;
}
temp = 1;
}
}
return arr.size() - result;
}
가장 같은 값이 많은 숫자의 갯수를 찾기 위한 result 변수를 선언한다
이 후 같은 값을 빠르게 찾기 위해 arr 배열을 sort 함수로 정렬시켜 같은 값이 순서대로 올 수 있게 정렬한다
같은 값은 자기 자신을 포함해 1개 이상일 테니 temp의 초기값은 1로 정한다
arr 배열을 순회하면서 i번째 배열과 그 다음 배열의 값이 같다면 temp의 값을 1 증가시킨다
만약 같지 않다면 현재 값과 같은 값을 가진 값이 없다는 뜻이므로 temp가 result보다 크다면 result가 가장 큰 값이므로 갱신해 준다
갱신이 되지 않았더라도 이제 같은 값은 없으므로 temp의 값은 1로 초기화 해준다
반복문이 끝나고 난 후 result에는 가장 많은 같은 수의 값이 되는데, arr.size()에서 이 값을 빼면 arr에서 지워질 배열의 갯수가 나온다
'코딩테스트 해커랭크 > Algorithms -Easy' 카테고리의 다른 글
| [HackerRank/C++] Taum and B'day (0) | 2023.02.07 |
|---|---|
| [HackerRank/C++] ACM ICPC Team (0) | 2023.02.07 |
| [HackerRank/C++] Jumping on the Clouds (0) | 2023.02.07 |
| [HackerRank/C++] Repeated String (0) | 2023.02.07 |
| [HackerRank/C++] Cut the sticks (0) | 2023.02.07 |