[문제] A Very Big Sum | HackerRank Calculate the sum of the values in an array that might exceed the range of int values. www.hackerrank.com [문제 설명] - 매우 큰 수의 합을 리턴하는 함수를 만들어라 > return type은 long type임 [문제 풀이] - c++에서 입력받는 파라미터가 vector뿐이여서 수의 개수를 구하는 것이 문제 → vector이름.size()를 통해 벡터에 저장된 수들의 개수를 얻을 수 있음 - for문을 반복하며 long 타입의 변수에 값을 더해나감 [코드] long aVeryBigSum(vector ar) { long a=0; for(int i=0;i
[문제] Closest Numbers | HackerRank Find the closest numbers in a list. www.hackerrank.com [문제 설명] - 가장 작은 차이를 가지는 두 수의 조합을 담는 벡터를 반환하는 함수를 만들자 [문제 풀이] - 벡터에 있는 수를 오름차순으로 정렬 - for문을 돌면서 두 값의 차이를 구함 > 두 값의 차이가 min과 같다면 새로 만든 벡터에 두 원소를 push > 두 값의 차이가 min보다 작다면 새로 만든 벡터에서 모든 원소를 pop 하고 새로운 두 원소를 push > 두 값의 차이가 min보다 크다면 그냥 넘어감 [코드] vector closestNumbers(vector arr) { sort(arr.begin(),arr.end()); ve..
[문제] Compare the Triplets | HackerRank Compare the elements in two triplets. www.hackerrank.com [문제 설명] - alice와 bob의 세개의 숫자를 비교하여 각 사람의 점수를 더함 - 각 배열의 자리에 더 큰 수를 낸 사람이 이기며 동점일 땐 아무도 점수를 받지 않음 [문제 풀이] - for문을 통해 a vector와 b vector의 각 자리를 비교 > a가 더 크다면 alice의 점수를 증가 > b가 더 크다면 bob의 점수를 증가 > 동점일 경우에는 아무것도 하지 않고 넘어감 - int형 vector를 생성하여 0번째 인덱스에는 alice의 점수를, 1번째 인덱스에는 bob의 점수를 저장 [코드] vector compare..
[문제] Plus Minus | HackerRank Calculate the fraction of positive, negative and zero values in an array. www.hackerrank.com [문제 설명] - 양의 값의 비율, 음의 값의 비율, 0의 비율을 구해야 함 - 소숫점 아래 6자리까지 표현함 [문제 풀이] - 각 양수, 음수, 0의 개수를 세기 위하여 for문으로 벡터를 탐색 - 나누어지는 수가 실수형이여야 하므로 형변환을 시켜주어야 함 - 비율을 구하기 위해 각 개수/벡터의 원소의 개수 식을 세움 - 6자리까지 출력할 수 있도록 출력 포맷 형식 지정 [코드] void plusMinus(vector arr) { int plus=0; int minus=0; int zer..
[문제] Grading Students | HackerRank Round student grades according to Sam's rules. www.hackerrank.com [문제 설명] - 학생들의 최종 성적을 구하는 문제 - 38점 이하의 점수를 받는 학생들은 반올림된 점수를 받지 못함 - 학생들의 점수를 반올림 할 수 있는 경우에 대하여는 반올림한 성적을 반영함 [문제 풀이] - 일의 자리가 5인 점수와 그렇지 않은 점수를 구별해야 함 - 100점일 때와 낙제점 38점 이하일 때에 대하여 예외처리 필요 - 일의 자리가 5 아래일 경우 해당 점수의 십의자리에 해당하는 숫자*10+5와 주어진 점수의 차를 비교하여 최종 성적을 구함 - 일의 자리가 5이상일 경우 해당 점수의 십의 자리에 해당하는 ..
[문제] Simple Array Sum | HackerRank Calculate the sum of integers in an array. www.hackerrank.com [문제 설명] - 배열의 모든 수를 더해 반환하기 [문제 풀이] - int형 배열이 아닌 vector를 사용하고 그 벡터의 size()를 사용하여 배열의 길이를 사용함 - for문을 사용하여 벡터의 크기만큼 덧셈을 수행함 [코드] int simpleArraySum(vector arr) { int sum=0; for(int i=0;i
[문제] Diagonal Difference | HackerRank Calculate the absolute difference of sums across the two diagonals of a square matrix. www.hackerrank.com [문제 설명] - 배열에서 교차되는 수 2개(왼쪽에서 오른쪽 대각선 방향, 오른쪽에서 왼쪽 대각선 방향)의 합의 절댓값을 구하기 [문제 풀이] - for문을 사용하여 더해지는 배열 대각선 방향의 합을 구함 > 왼쪽에서 오른쪽 방향 대각선의 합은: arr[i][i]를 사용하여 구할 수 있음 > 오른쪽에서 왼쪽 방향 대각선의 합은: arr[i][size-1-i]를 사용하여 구할 수 있음 * 이때 size는 배열의 행 혹은 열의 크기임 (정사각형 모양의 배..
[문제] Correctness and the Loop Invariant | HackerRank How do you demonstrate the correctness of an algorithm? You can use the loop invariant. www.hackerrank.com [문제 설명] - 주어진 삽입 정렬 코드를 수정하여 프로그램을 완성 - 주어진 삽입 정렬 코드 void insertionSort(int N, int arr[]) { int i,j; int value; for(i=1;i0 && value0 인덱스에 대한 조건식 수정 [코드] #include #include #include #include #include void insertionSort(int N, int *arr) { in..
[문제] Mini-Max Sum | HackerRank Find the maximum and minimum values obtained by summing four of five integers. www.hackerrank.com [문제 설명] - 입력: 5개의 띄어쓰기로 구분되는 숫자 5개를 한 줄로 입력받음 - arr: 주어진 arr에는 5개의 정수 값을 입력받을 수 있음 - 출력: 32bit 정수보다 커야함, 5개의 숫자 중 4개를 골라 가장 작은 합과 가장 큰 합을 출력 [문제 풀이] - 입력 받은 arr를 정렬(버블 정렬 사용)하여 오름차순으로 정리 - for문을 이용하여 두개의 출력 값을 계산 > 가장 합이 작을 때는 인덱스 0~3까지의 합 > 가장 합이 클 때는 인덱스 1~4까지의 합 - 출..