[HackerRank/C++] Minimum Distances

2023. 2. 7. 07:51코딩테스트 해커랭크/Algorithms -Easy

배열 a에서 같은 값을 가지는 수들을 찾고, 그 수들의 간격중 가장 짧은 간격값을 return한다

 

만약 그런 수가 없다면 -1을 return 한다

int minimumDistances(vector<int> a)
{
    int result = INT_MAX;
    
    for (int i = 0; i < a.size(); ++i)
        for (int j = i + 1; j < a.size(); ++j)
            if (a[i] == a[j])
            {
                if (result > j - i)
                    result = j - i;
                break;
            }
    
    if (result < a.size() + 1)
        return result;
    else
        return -1;
}

가장 작은 수를 가질것이므로 result의 초기값은 INT_MAX로 초기화 한다

 

반복문을 돌며 i번째와 j번째 숫자가 같은지 체크한다

 

만약 같고 j - i가 result보다 작다면 result의 값을 j - i로 갱신한다

 

모든 반복문이 끝난 후 result의 값이 a.size() + 1보다 작다면 한번이라도 값이 갱신됐으므로 result를 return 하고

 

그렇지 않다면 갱신이 일어나지 않았으므로 -1을 return 한다