HackerRank/Algorithms

[HackerRank] Search > Ice Cream Parlor

ruming 2021. 8. 26. 05:16

두 명의 친구가 두 가지 맛의 아이스크림을 사는데, 가격에 맞춰서 맛을 고르면 되는 문제다.

아이스크림 가격이 들어 있는 배열에서 두 가지 다른 맛을 골라 m의 가격에 맞추면 된다.

  • There will always be a unique solution.

▷▶ 합이 m이 되는 경우는 한가지라고 한다.

 

 

배열에서 반복문을 돌려 합이 m이 되는 순간의 순서를 answer에 순서를 저장했다.

int* icecreamParlor(int m, int arr_count, int* arr, int* result_count) {
    *result_count = 2;
    int i, j;
    static int answer[2]={0};
    for(i=0; i<arr_count; i++){
        for(j=1; j<arr_count; j++){
            if(arr[i]+arr[j]==m){
                if(i==j)    continue;
                if(i>j){
                    answer[0] = j+1;
                    answer[1] = i+1;
                    break;
                }else{
                    answer[0] = i+1;
                    answer[1] = j+1;
                    break;
                }
            }
        }
    }
    return answer;
}

답을 저장할 배열 하나를 선언해주고, 이중 for문을 돌려 두 합이 m이 되면 배열에 인덱스+1한 값을 저장한다.

같은 가격을 두 번 고르면 안되기 때문에 i와 j가 같을 경우 넘어가도록 continue를 사용했다.

오름차순으로 출력하라고 했기 때문에 작은 값부터 출력하기 위해 if문을 사용했다.