인사말
안녕하세요. 오늘은 C++ 학습일지의 첫 번째 게시글을 작성하게 되었습니다. 저는 기존에 Python, Go, Node.js, JavaScript 등의 언어를 다뤄본 경험이 있고, 실제 프로젝트나 실습에서도 사용해본 적이 있습니다. 그 덕분인지 현재로서는 C++을 학습하는 데 큰 어려움은 느끼지 않고 있습니다.
이번에는 C++을 학습하며 익힌 기본적인 문법들 — 제어문, 반복문, 그리고 int, float, double, char 등 기본 자료형에 대해 정리하고, 제가 가장 익숙한 언어인 Python과 함께 간단한 등차수열 합산 프로그램을 구현해보았습니다.
주제 소개
이번 실습에서는 동일한 시간 복잡도를 갖는 재귀 기반 등차수열 합산 프로그램을 C++과 Python 두 언어로 작성하였습니다. 입력값은 다음과 같습니다.
-
초기값: 1
-
공차: 1
-
제한값: 100
재귀 함수를 활용하여 구현하였고, 각 언어가 같은 입력에 대해 어떤 성능 차이를 보이는지 측정해보았습니다.
C++ 코드
#include <stdio.h>
#include <time.h>
int inputFunc(int i) {
int x;
if (i == 0) {
printf("초기값을 선택해 주세요: ");
} else if (i == 1) {
printf("공차를 선택해주세요: ");
} else {
printf("제한 값을 지정해주세요: ");
}
scanf("%d", &x);
getchar();
return x;
}
int Sum(int a, int d, int limit_val) {
if (a < limit_val) {
return Sum(a + d, d, limit_val) + a;
} else {
return 0;
}
}
int main(void) {
int a, d, limit_val;
for (int i = 0; i < 3; i++) {
if (i == 0) a = inputFunc(i);
else if (i == 1) d = inputFunc(i);
else limit_val = inputFunc(i);
}
clock_t start = clock();
int total = Sum(a, d, limit_val);
clock_t end = clock();
printf("초기값이 %d이고 공차가 %d이며 제한값이 %d인 등차수열의 합은 %d입니다.\n", a, d, limit_val, total);
printf("총 걸린 시간: %.6f초\n", (double)(end - start) / CLOCKS_PER_SEC);
return 0;
}
Python
성능 비교 및 결론
마무리
오늘은 이렇게 C++ 언어 공부 일지를 작성해 보았습니다. 아직까지는 문법적인 부분이나 기본 구조에서는 큰 어려움 없이 따라가고 있지만, 앞으로는 메모리 관리나 포인터처럼 C++ 특유의 개념들을 접하면서 본격적인 난이도가 올라갈 것으로 예상됩니다.
그만큼 더 깊이 있게 고민하고 실습하면서 익숙해져야겠다는 생각이 들었습니다. C++ 학습을 함께 시작하신 분들께 이 글이 작은 참고가 되기를 바라며, 앞으로도 꾸준히 학습 내용을 정리해보도록 하겠습니다.
그럼 오늘도 모두 화이팅입니다!
