두 명의 친구가 두 가지 맛의 아이스크림을 사는데, 가격에 맞춰서 맛을 고르면 되는 문제다.
아이스크림 가격이 들어 있는 배열에서 두 가지 다른 맛을 골라 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문을 사용했다.
'HackerRank > Algorithms' 카테고리의 다른 글
[HackerRank] Strings > Strong Password (0) | 2021.08.26 |
---|---|
[HackerRank] Strings > Pangrams (0) | 2021.08.26 |
[HackerRank] Warmup > Diagonal Difference (0) | 2021.08.14 |
[HackerRank] Warmup > Compare the Tripets (0) | 2021.08.14 |
[HackerRank] Implementation > Find Digits (0) | 2021.08.08 |