[문제] 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이상일 경우 해당 점수의 십의 자리에 해당하는 ..
[문제] Equal Stacks | HackerRank Equalize the piles! www.hackerrank.com [문제 설명] - 그림을 보니 push된 반대 순서대로 pop이 되는 것을 확인할 수 있음 - 반환 값은 각각 pop하며 스택에 남은 수의 합이 같아지는 순간 그 합을 리턴함 [문제 풀이] - stack과는 다르게 아래서 깔린 수부터 pop되므로 reverse함수를 통해 순서를 변경해주어야 함 - sum 함수를 선언하여 각 벡터의 원소의 합을 각각 구함 - 세 합이 같은 수가 될때까지 각각의 합을 감소시켜 같은 수가 될 때까지 반복함 - 같은 수가 되는 순간 그 수를 반환시킴 [코드] int sum(vector a){ int sum=0; for(int i=0;im){ a-=h1.b..
[문제] 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는 배열의 행 혹은 열의 크기임 (정사각형 모양의 배..
[문제] Time Conversion | HackerRank Convert time from an AM/PM format to a 24 hour format. www.hackerrank.com [문제 설명] - 입력은 string으로 주어지면 12시 형식으로 주어짐 - AM과 PM을 보고 24시 시간으로 주어진 시간을 바꾸는 것이 목표 [문제 풀이] - AM인 경우에는 12시 일때 00시 인 것을 고려함 > 12시가 아닌 경우에는 시간을 그대로 반환 - PM인 경우에는 주어진 시에 12를 더해야 함 > 12시에 12를 더할 경우 24가 되므로 이는 예외로 따로 처리함 [코드] string timeConversion(string s) { int num; if(s[8]=='A') { if(s[0]=='1'&..
[문제] Left Rotation | HackerRank Given an array and a number, d, perform d left rotations on the array. www.hackerrank.com [문제 설명] - 예제를 보면 입력 받은 횟수 만큼 맨 앞의 원소가 왼쪽에서 나와 오른쪽으로 들어가고 있음 [문제 풀이] - 왼쪽에서 나와 오른쪽으로 들어가는 방식 -> 큐를 생각 - 백터로 반환 형식이 지정되어 있으므로 vector의 stl 사용 > v.front(): 맨 앞의 원소를 반환 > v.push_back(): 원소를 뒤에 넣음 > v.erase(): 해당 위치의 원소를 지움 [코드] vector rotateLeft(int d, vector arr) { int temp; for(..