[Algorithm] 약수의 합
·
Algorithm/Practice
문제 설명정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 문제 유형약수 구하기 의사코드총합을 저장할 변수(sum)를 선언한다.[반복문] 2부터 √N까지 반복한다.만약 N을 나누었을 때 나머지가 0이라면나눈 수와 몫을 sum에 더한다.나눈 수와 몫이 동일한 값이라면 한 번만 더한다.총합(sum)을 반환한다. 코드 작성int solution(int num) { int sum = 0; int rootNum = sqrt(num); for (int div = 1; div   배운 점N의 약수를 구하려면 1부터 N의 제곱근까지만 반복하면 된다.이유는 약수의 최대 값은 N이다. (1 x N)약수 a가 √N보다 크면, 그에 대응하는 약수 b는 √N..
[Algorithm] 자릿수 더하기
·
Algorithm/Practice
문제 설명자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다 문제 유형나눗셈과 나머지 연산 활용 의사코드총합을 저장할 변수(sum)를 선언한다.[반복문] n > 0일 때까지 반복한다.n을 10으로 나눈 나머지를 구한다.구한 나머지를 sum에 더한다.n을 10으로 나눈다.총합(sum)을 반환한다. 코드 작성int solution(int n){ int sum = 0; while (n > 0) { int remain = n % 10; sum += remain; n /= 10; } return sum;}
[Algorithm] 평균 구하기
·
Algorithm/Practice
문제 설명정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 문제 유형배열의 평균 구하기 의사코드입력된 배열을 순회하며 모든 요소의 총합(sum)을 구한다.총합(sum)을 배열의 사이즈로 나누어 평균값을 구한다.결과값을 반환한다. 코드 작성double solution(vector nums) { int sum = 0; for (int num : nums) { sum += num; } return static_cast(sum) / nums.size();}
[Algorithm] 각도기
·
Algorithm/Practice
문제 설명각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요. 문제 유형조건에 따른 분기 의사코드만약 angle이 0보다 크고 90보다 작다면 반환값은 예각(1)이다.그렇지 않고 angle이 90과 같다면 반환값은 직각(2)이다.그렇지 않고 angle이 90보다 크고 180보다 작다면 반환값은 둔각(3)이다.그렇지 않고 angle이 180과 같다변 반환값은 평각(4)이다. 코드 작성int solution(int angle) { int result = 0; if (a..
[Algorithm] 두 수의 합
·
Algorithm/Practice
문제 설명정수 num1과 num2가 주어질 때,num1과 num2의 합을 return하도록 soltuion 함수를 완성해주세요. 문제 유형간단한 연산 의사코드두 입력값을 더한다.결과값을 반환한다. 코드 작성int solution(int num1, int num2) { return num1 + numw2;}
[Algorithm] 숫자 비교하기
·
Algorithm/Practice
문제 설명정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요. 문제 유형비교 연산 의사코드두 수가 같은지 비교한다.결과값에 따라 1 or -1을 반환한다. 코드 작성int solution(int num1, int num2) { return num1 == num2 ? 1 : -1;}
[Algorithm] 조합 (Combination)
·
Algorithm/Basic
조합어떤 리스트에서 N개를 중복 없이, 순서를 고려하지 않고 선택하는 것을 말한다.예를들어 {1,2,3}에서 2개를 선택하는 경우{1,2}{1,3}{2,3}총 3가지 경우의 수가 존재한다. 조합 형태int selectCount = 2; // 선택할 개수void combi(int start, vector v){ if (v.size() == selectCount) { // Logic return; } for (int idx = start + 1; idx v; combi(-1, v);}combi 함수는 재귀 함수이다.기저 사례를 충족할 때까지(size == 2) 빈 벡터에 인덱스를 순차적으로 집어 넣는다.기저 사례를 충족하면 함수 호출을 종료하고 이전 단계로 돌아간다.DFS와..
[Algorithm] 순열 (Permutation)
·
Algorithm/Basic
순열어떤 리스트에서 뽑는 순서에 따라 결과가 다른 경우를 말한다.예를들어 {1,2,3}에서 3개를 뽑는 경우{1,2,3}, {1,3,2}{2,1,3}, {2,3,1}{3,1,2}, {3,2,1}총 6가지의 경우의 수가 존재한다. 순열 형태vector list = {1,2,3}; do { for (int i : list) cout NextPermutaion(from, to) 입력값from : 리스트의 첫번째 요소to     : 리스트의 마지막 요소 (null)주의리스트는 사전에 오름차순으로 정렬되어 있어야 한다. 순열의 개수순열의 개수는 공식을 통해 구할 수 있다.n = 총 개수r = 선택할 개수nPr = n개 중에 r개를 선택하여 나오는 순열의 개수  참고 순열과 조합해당 포스트는 순열과 조합를 ..