[HackerRank] Implementation > Divisible Sum Pairs https://www.hackerrank.com/challenges/divisible-sum-pairs/problem ar 배열 안의 두 값을 더했을 때 k로 나눌 수 있는 값의 개수를 세는 문제이다. Sample Input의 배열쌍 int divisibleSumPairs(int n, int k, int ar_count, int* ar) { int i, j, count; for(i=0; i HackerRank/Algorithms 2021.09.12
[HackerRank] Sorting > Counting Sort 2 숫자들을 크기순으로 정렬하고 출력하면 된다. 다만 counting sort 1처럼 100크기의 배열을 만들어 숫자가 각각 몇 개 있는지 세고, 그 개수만큼 출력하면 된다. n의 범위가 0이상 1000000이하인 것에 주의한다. int* countingSort(int arr_count, int* arr, int* result_count) { *result_count=arr_count; static int rArr[100] = {0}, ret[1000000] = {0}; int i, j, seq=0; for(i=0; i HackerRank/Algorithms 2021.09.12
[HackerRank] Strings > Caesar Cipher 카이사르 암호를 구현하는 문제이다. 카이사르 암호는 알파벳을 지정한 수만큼 움직여 암호화하는 기법이다. 대문자와 소문자를 문자열에 저장해 두고 그 안에서 돌릴 수 있을까 생각해봤는데 반복문이 많이 돌아가면 더 복잡해질 것 같아 경우의 수를 나누어서 더해주었다. char* caesarCipher(char* s, int k) { int i, n = strlen(s); for(i=0; i='A'&&s[i]=26) k%=26; if(s[i]+k>'Z') s[i] -= 26; s[i] = s[i]+k; } if(s[i]>='a'&&s[i]=26) k%=26; if(s[i]+k>'z') s[i] -= 26; s[i] = s[i]+k; } } return s; } 암호문에서 대문자와 소문자를 구분했다. s[i]에 k.. HackerRank/Algorithms 2021.08.26
[HackerRank] Strings > Strong Password strong password에는 5가지 기준이 있다. 최소 6자리 이상 숫자 1개 이상 소문자 1개 이상 대문자 1개 이상 특수문자 1개 이상 !@#$%^&*()-+ 문제에서 준 문자열을 사용했다. numbers = "0123456789" lower_case = "abcdefghijklmnopqrstuvwxyz" upper_case = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" special_characters = "!@#$%^&*()-+" strong password를 위해 몇 개의 문자를 추가해야 하는지 출력하면 된다. 첫번째 예제를 보면, Ab1의 경우 조건 1, 5를 충족하지 않는다. 6자리를 충족하려면 특수문자를 포함한 3개의 문자가 더 필요하므로 출력할 정수는 3이다. 두번째 예제는 .. HackerRank/Algorithms 2021.08.26
[HackerRank] Strings > Pangrams pangram은 주어진 모든 문자를 한 번 이상 사용해 만든 문장이다. 이 문제에서는 알파벳을 a부터 z까지 전부 사용한 문장은 pangram을 출력, 아닌 문장은 not pangram을 출력하게 한다. 대문자는 소문자로 변환하고 int형 배열에 알파벳이 사용된 숫자를 저장했다. 배열에 0이 있으면 not pangram을 출력하고 그렇지 않으면 pangram을 출력한다. char* pangrams(char* s) { static char pan[] = "pangram"; static char n_pan[] = "not pangram"; int i, j; char al[27] = {0}; int check[26] = {0}; for(i=0; i='A'&&s[i] HackerRank/Algorithms 2021.08.26
[HackerRank] Search > Ice Cream Parlor 두 명의 친구가 두 가지 맛의 아이스크림을 사는데, 가격에 맞춰서 맛을 고르면 되는 문제다. 아이스크림 가격이 들어 있는 배열에서 두 가지 다른 맛을 골라 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 HackerRank/Algorithms 2021.08.26
[HackerRank] Warmup > Diagonal Difference NxN크기의 배열이 입력되면 대각선 방향으로 원소들을 더한다. 두 값의 차를 맞추는 문제다. 코드 int diagonalDifference(int arr_rows, int arr_columns, int** arr) { int i, l_di=0, r_di=0, result=0; for(i=0; i HackerRank/Algorithms 2021.08.14
[HackerRank] Warmup > Compare the Tripets 배열 a와 b에 각각 세 개의 정수가 들어온다. 순서에 맞게 a와 b의 원소값을 비교해 큰 쪽이 1점을 가져간다. int* compareTriplets(int a_count, int* a, int b_count, int* b, int* result_count) { *result_count = 2; int i; int *score = malloc(2*sizeof(int)); score[0] = 0, score[1] = 0; for(i=0; i b[i]){ score[0]++; }else if(a[i] < b[i]){ score[1]++; } } return score; } 배열을 반환해야 하므로 점수를 저장한 score를 할당받았다. a의 배열 값과 b의 배열 값을 각각 비교해 a 값이 크면 score[0.. HackerRank/Algorithms 2021.08.14
[HackerRank] Implementation > Find Digits n이라는 int 범위 안의 수가 들어오고, n을 n의 자릿수로 나눴을 때 나머지가 0인 개수를 리턴하면 된다. 배열을 사용하면 0일 때를 처리하기가 애매해서 사용하지 않았는데, 0을 제외한 자릿수를 넣어주면 됐을 거라는 생각이 든다. 잦은 실수로 코드를 계속 수정했는데, 0으로 나눌 수 없는 것과 나머지를 구한다는 것을 주의하면 된다. int findDigits(int n) { int an = 0, temp = n; while(temp){ if(temp%10){ if(n%(temp%10)==0) an++; } temp /= 10; } return an; } 먼저 자릿수를 바로 구해 나머지로 계산해줬다. n을 계속 써야 하는 것을 고려해 temp에 n을 넣어주었다. while문으로 temp가 0이 아닐때까.. HackerRank/Algorithms 2021.08.08
[HackerRank] Implementation > Drawing Book n은 책의 총 페이지 수, p는 페이지다. p라는 페이지를 펼 때, 처음에서 피는 것과 끝에서(n페이지) 피는 것 중에 덜 피는 것을 고르면 된다. 몇 장을 넘겨야 하는지를 비교해 작은 값을 리턴한다. 1페이지가 오른쪽에서부터 시작한다. 방법을 생각하면서 정형화된 공식이 있을까 고민해봤는데 그냥 몇가지 케이스로 나누기로 했다. 짝수일 때와 홀수일 때를 주로 구분했다. 책 1 | 2 3 | 4 5 | 6 7 | 8 9 | 10 11 | ··· 일단 첫페이지부터 p까지 넘겨야 되는 경우, 넘겨야 하는 장수는 무조건 p를 2로 나눈 값이 된다. (나머지는 버림) 그리고 p가 홀수면, p를 1페이지로 생각하고 n을 p로 생각해 계산했다. n-p+1한 값에서 2로 나눈다. 처음에는 장수를 계산해 비교하지 않고 n.. HackerRank/Algorithms 2021.08.08