구조체(Struct)
구조체(Struct)는 연관된 여러 데이터를 하나의 단위로 묶어 처리하기 위해 사용되는 구조화 된 데이터입니다. 만약, C에서 struct를 사용하지 않고 프로그래밍을 하라고 한다면 데이터 관리나 함수 호출 등에서 가독성이 좋지 않게 되고, 유지보수도 어려워 질 것입니다. 예를 들어, 학생 정보를 관리하기 위해 이름, 나이, 학점 등을 각각의 변수...
구조체(Struct)는 연관된 여러 데이터를 하나의 단위로 묶어 처리하기 위해 사용되는 구조화 된 데이터입니다. 만약, C에서 struct를 사용하지 않고 프로그래밍을 하라고 한다면 데이터 관리나 함수 호출 등에서 가독성이 좋지 않게 되고, 유지보수도 어려워 질 것입니다. 예를 들어, 학생 정보를 관리하기 위해 이름, 나이, 학점 등을 각각의 변수...
이전에 함수 포인터는 매우 유연한 프로그래밍을 만들기 좋은 도구지만, 매번 함수 포인터를 만들기에는 조금 코드가 많아지거나 보기 불편할 수 있습니다. 이를 간단하게, 보기 좋게 만드는 방법은 몇 가지 존재합니다. typedef로 기존의 타입에 새로운 별칭을 만들어주는 방법. (새로운 타입처럼 사용하기) using을 사용하여 기본 타입에 새...
이 전에 다룬 콜백 함수와 델리게이트의 글에 이어 일급 객체 (First-Class Citizen)와 고차 함수 (Higher-Order Function)에 대해서 설명하겠습니다. 우선, 간단하게 설명하자면, 일급 객체는 변수에 할당하거나 다른 함수에 전달할 수 있는 객체를 의미합니다. 고차 함수는 함수형 프로그래밍의 핵심 개념 중 하나로, 코드...
콜백 함수(Callback function)와 델리게이트(Delegate)는 프로그램의 유연성과 확장성을 증가시켜주는 고급 프로그래밍 기법입니다. 프로그래밍을 하다 보면 종종 다양한 상황에 맞추어 동작을 변경해야 할 때가 있습니다. 이러한 상황에서 콜백 함수와 델리게이트는 다양한 상황에서 동작을 변경시켜 주면서도 디커플링을 유지시켜주는, 매우 유연한...
프로그램에서 정의된 함수는 프로그램 실행 시 메모리에 로드됩니다. 이때, 함수의 이름은 실제로 해당 함수의 기계어 코드가 저장된 메모리 주소를 참조하는 식별자로 사용됩니다. 이 주소는 함수 코드의 시작 지점을 나타내며, 이를 통해 함수를 간접적으로 호출할 수 있습니다. 함수 포인터는 이러한 함수의 시작 주소를 저장하는 변수입니다. 즉, 함수 포인...
2293번: 동전 1 (acmicpc.net) 문제는 n가지 종류의 동전으로 k원의 가치를 만드는 동적 계획법(Dynamic Programming, DP) 문제입니다. 동적 계획법(Dynamic Programming, DP)이란, 큰 문제를 작은 문제들로 나누어 풀어나가고 작은 문제의 해를 저장해 다시 계산하지 않고 사용하는 방식입니다. 이 문제에...
가변 파라미터(매개변수) 함수를 구현하는 방법은 C스타일과 C++(C++11) 스타일 2개가 존재합니다. C 스타일은 stdarg.h을 사용하고 C++ 스타일은 템플릿 가변 파라미터(Template)를 사용하는 것입니다. C 스타일 가변 파라미터 함수 C스타일의 가변 파라미터 함수는 __cdecl 함수 호출 규약을 사용합니다. __cdecl 호...
2629번: 양팔저울 (acmicpc.net) 문제는 주어진 무게추를 사용하여 만들 수 있는 모든 무게를 찾는 문제입니다. 문제의 그림에서 추와 구슬이 같이 그려져있어 자칫 어렵게 접근할 수도 있지만, 무게추들의 무게들을 전부 받은 후 그 무게추를 이용해서 만들 수 있는 모든 무게를 계산하면 여러 구슬에 대해서도 빠르게 풀어낼 수 있습니다. 무게추...
함수 호출 규약(Function Calling Convention)이란, 함수를 호출할 때 인자를 어떻게 전달하고, 함수가 반환될 때 어떻게 스택을 정리하는지에 대해 정의한 규칙입니다. 이 규약은 프로그래밍 언어, 컴파일러, 운영 체제, 아키텍처에 따라 다를 수 있습니다. 함수 호출 규약(Function Calling Convention) 사실 ...
11066번: 파일 합치기 (acmicpc.net) 문제는 여러 개의 파일을 하나로 합치는 과정에서 발생하는 비용을 최소화하는 문제입니다. 각 파일은 다른 크기를 가지고 있으며, 두 파일을 합칠 때 그 크기의 합만큼의 비용이 발생합니다. 이 문제를 동적 계획법으로 접근하면, 각 부분 문제의 최적 해를 찾아 전체 문제의 최적 해를 구할 수 있습니다. ...