목록C,C++ 기초 및 자료구조 (27)
rueki
1. 값을 return 받는 경우 #include using namespace std; //값을 반환 받는 경우 int getValue(int x) { int value = x * 2; return value; } int main() { int value = getValue(3); return 0; } int 값이 선언되는 즉시 복사된다. 즉, 함수값을 받고 value라는 변수로 바로 저장이되며, 흔히 볼 수 있고 선언하는 방식이다. 그러나 단점으로는 매번 변수가 복사되고 선언이 되는 작업이 진행된다. 2. 주소값으로 return 받는 경우 //포인터함수인 경우에는 주소값으로 return 받으면된다. int *getValue(int x) { int value = x * 2; return &value; }..
따배 C++ 강의 노트 이번 강의는 Call by Value와 Call by Reference에 대한 내용이다. 그에 앞서 먼저 함수의 매개변수 전달에 대해 간단히 알아보자. int foo(int x, int y) { return x + y; } int main() { int x = 1, y = 2; foo(6, 7); // 6과 7을 직접 매개변수로 넣음 foo(x, y + 1); // 인수 할당받아서 넣는 방법 return 0; } foo라는 함수에 두 개의 매개변수를 받아서 return 값으로 두 변수의 덧셈 결과를 반환받는다. 즉, x와 y는 foo 함수의 파라메러토써, x와 y에 따라 결과는 달라지게 되며, 이 변수들은 함수 내에서만 선언됨에따라, 함수가 끝나면 메모리가 반횐된다는 것을 기억하자..
자기 자신을 재참조한다 라는 정의를 가지고 있으며, 쉽게 설명하면, 함수 안에서 동일 함수를 호출한다고 생각하면 된다. 재귀를 설명할 때 제일 많이 등장하는 예제가 팩토리얼 문제이다. 팩토리얼의 개념은 아래와 같다. 3! = 3 x 2 x 1 2! = 2 x 1 1! = 1 여기서 이를 재귀로 구현을 해보려면 규칙을 찾는 것이 우선이다. 팩토리얼에는 무슨 규칙이 있을까? 말할 수 있는 규칙으로는 주어진 숫자가 3이라고 했을 때, 결과값은 3 x 2!과 같다. 2! 역시 2 x 1! 과 같다. 이를 통해서 우리는 식을 세울 수 있게 되는데, n! = n x (n-1)! 을 확인할 수가 있다. 이를 이제 코드로 구현해보자. def factorial(num): if num == 1: return num els..
이번 문제에서는 물건과 그에 대한 가치가 주어지고, 가방의 최대 한도 무게가 주어졌을 때, 최대한 높은 가치의 물건을 담기 위한 문제이다. 이는 동전 지불 문제에서 확장된 문제이며, 풀이 접근은 아래와 같다. 1 2 3 4 무게 10 20 30 40 가치 10 10 15 40 위와 같이 물건의 무게와 가치가 있다고 하자. 먼저, 무게는 다 다르고, 가치도 다른데, 어떤 물건이 더 가치있는 지 어떻게 판단할까? 가치 / 무게를 하면 무게에 대한 가치 비율을 알 수 있지 않을까? 2번과 3번 물건에 대해 계산을 해보자 2번 -> 10 / 20 3번 -> 15 / 30 2번, 3번 물건은 결과적으로 가치가 같은 물건임을 알 수가 있다. data_list = [(10,10),(20,10),(30,15),(25,..