HackerRank 49

[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] C > Introduction > Sum and Difference of Two Numbers

정수형 변수 두 개와 실수형 변수 두 개를 정의해 두 변수 간의 합과 차를 구하는 문제다. #include #include #include #include int main() { int a, b; float c, d; scanf("%d%d%f%f", &a, &b, &c, &d); printf("%d %d\n", a+b, a-b); printf("%.1f %.1f", c+d, c-d); return 0; } 변수들을 선언하고 입력받은 뒤 정수 두개, 실수 두개를 출력해주었다. 실수형은 소수점 첫번째자리까지 출력했다.

HackerRank/C 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] 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] C > Conditionals and Loops > For Loop in C

처음에 문제를 잘못 이해했었는데,, 생각보다 간단한 문제였다. 먼저 9이하인 자연수는 영어로 숫자를 출력하고, 9를 넘어가는 수부터는 짝수/홀수를 출력해주면 된다. 예를 들어서 입력으로 5 12 가 들어오면 five, six, seven, eight, nine, even, odd, even을 줄을 바꿔서 출력해주면 된다. 코드 int main() { int a, b, i; scanf("%d\n%d", &a, &b); // Complete the code. char en[9][10] = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; for(i=a; i

HackerRank/C 2021.08.03

[HackerRank C] Implementation : Angry Professor

지각한 사람이 몇명인지에 따라 수업이 진행될지 취소될지 결정된다. n명의 학생이 있고, 배열 a에 도착시간이 저장된다. 0초과면 지각이고, 지각하지 않은 학생이 k명 이상일 때 수업이 진행된다. 첫번째 예제때문에 좀 헷갈렸는데, 수업이 캔슬되면 YES를 출력, 캔슬되지 않으면 NO를 출력하면 된다. char* angryProfessor(int k, int a_count, int* a) { int n = a_count; int i, ck=0; char* s = malloc(10); for(i=0; i