HackerRank/Algorithms 36

[HackerRank] Implementation > Designer PDF Viewer

https://www.hackerrank.com/challenges/designer-pdf-viewer/problem 배열 h에 글자의 크기가 들어온다. word에서 가장 큰 글자의 크기로 하이라이트를 하는데 필요한 공간을 계산하는 문제다. zaba면 가장 큰 글자인 z의 크기가 7mm이므로 7x4(글자수) = 28을 출력하면 된다. [Java] public static int designerPdfViewer(List h, String word) { // Write your code here int max = 0, index; for(int i=0; i max) max = h.get(index); } return max*word.length(); } max는 가장 큰 글자의 높이다. index에 문자를 ..

[HackerRank] Sorting > Closest Numbers

https://www.hackerrank.com/challenges/closest-numbers/problem 배열 값에서 차가 가장 작은 수를 출력하면 된다. (중복 허용) 배열을 오름차순으로 정렬한 뒤 다음 원소와의 차를 구해 가장 작은 값을 배열에 넣어줬다. int compare(const void *a, const void *b) { return *(int *)a - *(int *)b; } int* closestNumbers(int arr_count, int* arr, int* result_count) { qsort(arr, arr_count, sizeof(int), compare); int *diff = (int*)malloc(sizeof(int)*(arr_count-1)*2); int dif ..

[HackerRank] Implementation > Cats and a Mouse

https://www.hackerrank.com/challenges/cats-and-a-mouse/problem 두 마리의 고양이와 한 마리의 쥐가 있다. 위치를 계산해 쥐를 더 빨리 잡을 수 있는 고양이를 출력한다. 거리가 같으면 고양이들이 싸우느라 쥐가 도망가므로 Mouse C를 출력한다. x = Cat A, y = Cat B, z = Mouse C char* catAndMouse(int x, int y, int z) { char *str = (char*)malloc(10); int a = x-z, b = y-z; if(ab이면 Cat B, a

[HackerRank] Implementation > Bill Division

https://www.hackerrank.com/challenges/bon-appetit/problem Anna와 Brian이 밥을 먹었다. 계산할 때 Anna가 먹지 않은 음식의 값을 뺀 나머지를 Brian과 나누는데, 돈이 잘 계산됐는지 확인하면 된다. 배열 bill에 음식의 값들이 저장되고, Anna가 먹지 않은 음식의 인덱스는 k에 저장된다. b는 Brian이 Anna에게 청구한 금액인데, 맞으면 Bon Appetit를, 틀리면 Brian이 청구한 금액 - Anna가 낼 금액을 계산해서 출력한다. void bonAppetit(int bill_count, int* bill, int k, int b) { int anna = 0; for(int i=0; i

[HackerRank] Implementation > The Hurdle Race

허들의 높이가 배열로 들어오고 Dan의 캐릭터가 뛸 수 있는 높이가 k로 들어온다. 마법포션을 먹으면 캐릭터가 뛸 수 있는 최고 높이보다 1 더 뛸 수 있게 된다. 허들을 전부 넘기 위해 마법포션을 몇 개 먹어야 할까? int hurdleRace(int k, int height_count, int* height) { int max = height[0], answer; for(int i=1; i0) answer = max-k; else answer = 0; return answer; } 가장 높은 허들의 높이를 저장할 max를 선언하고 높이배열의 첫번째 값으로 초기화한다. 답을 반환할 answer를 선언한다. for문으로 max에 허들배열중에 가장 높은 값을 저장하기 위해 if문으로 max와 height[..

[HackerRank] Sorting > Running Time of Algorithms

https://www.hackerrank.com/challenges/runningtime/problem insertion sort로 정렬되는 동안 값이 자리가 몇 번 바뀌었는지 세는 문제다. int runningTime(int arr_count, int* arr) { int cnt=0, temp; for(int i=0; i arr[i+1]){ for(int j=i+1; j>=0; j--){ if(arr[j] < arr[j-1]){ temp = arr[j-1]; arr[j-1] = arr[j]; arr[j] = temp; cnt++; } } } } return cnt; } 일단 삽입정렬로 정렬해준 뒤 변수 하나만 추가해 정렬될 때 숫자가 증가되도록 하면 된다. 이중 for문을 사용하는데 첫번째 for문을 ..