본문 바로가기

c언어 스터디/HackerRank

[HackerRank] Minimum Distances

Minimum Distances | HackerRank

 

Minimum Distances | HackerRank

Find the minimum distance between two different indices containing the same integers.

www.hackerrank.com

 

<문제>

input) 첫번째 줄에는 배열의 크기를 입력받고, 두번째 줄에는 전체 배열을 입력받는다.
함수 minimumDistances ) 배열 원소 중에 값이 같은 원소들끼리의 인덱스 차이인 거리를 구한다. 
가능한 거리들 중 최소값을 리턴하는 함수이다.
output) 가장 최소의 거리를 출력한다.

 

<코드>

int minimumDistances(int a_count, int* a) {
    int min=INT_MAX;
    for(int i=0;i<a_count;i++){
        for(int j=i+1;j<a_count;j++){
            if(a[i]==a[j]){
                if(j-i<min)
                    min=j-i;
                break;
            }
        }
    }
    if(min==INT_MAX)
        min=-1;
    return min;
}

 

<코드 풀이>

먼저 변수 min을 선언하고, 이중 for문과 중첩된 if문을 이용해 문제를 풀었다.
이중 for문을 통해 a배열에서 a[i], a[j]를 비교하였고 만약 a[i]==a[j]이면서 j-i<min이면 min의 값을 j-i로 바꾸었다.
만약 min변수가 처음에 선언한 값에서 바뀌지 않았다면 -1을 리턴하도록 하였다.

 

<결과>