
모빌리티 분야의 AI 엔지니어로 성장하려면 C/C++과 Python에 대한 이해가 필요합니다. C/C++로 주요 프로그램을 제작하고, Python으로 테스트 코드를 작성하거나 AI 모델 학습과 관련된 작업을 수행하는 것으로 알고 있습니다. 이러한 이유로 저의 주 언어인 Python 외에도 C++의 학습 필요성을 느껴 이 프로젝트를 기획하게 되었습니다.
<코딩테스트 C/C++/Python> 프로젝트는 C언어, C++, Python으로 동일한 코딩테스트 문제를 풀고, 코드 리뷰를 통해 생기는 프로그래밍 언어에 대한 궁금증을 정리한 내용을 담고 있습니다.
| 종류 | 수행 기간 | 언어 | 주요 내용 |
|---|---|---|---|
| 프로그래머스 스터디 | 2022.11.22 ~ 12.21(종료) | Python | 1. Github 코드 리뷰 2. 주요 알고리즘 및 Python 시간복잡도 개선 스킬 학습 |
| 9oormthon Challange | 2023.08.14 ~ 10.08(리뷰) | Python, C++ (C언어 추후 예정) | 20일 동안 1일1문제 챌린지 도전 1. 동일 문제에 대한 C/C++/Python 코드 작성 2. 프로그래밍 언어별 특성 비교 |
| HSAT | 2023.07.25 ~ 08.10 2023.10.09 ~ (일시정지) | Python (C++ 추후 예정) | 2023년 7회 정기 시험 참가 및 Lv.3 취득 1. 알고리즘 선택 시행착오 및 분석(Python) |
세 종류의 프로그래밍 언어를 사용했을 때 느꼈던 개인적인 분석입니다.
파이썬은 동적 언어이기 때문에 코드를 쉽고 빠르게 작성할 수 있습니다. 하지만, 코딩테스트에서 제한 시간 내 동작하는 코드를 작성하기 위해서는 자료형 클래스의 인스턴스 메소드가 갖는 시간 복잡도를 알아야 합니다. 시간 복잡도를 이해하기 위해서는 파이썬의 특징에 대한 이해가 필요합니다.
파이썬의 독특한 특징은 자료형에서부터 나타납니다. 코딩테스트에서는 클래스를 사용하지 않아 클래스를 몰라도 되지만, 파이썬은 객체지향 언어로 자료형이 모두 클래스로 구현되어 있습니다. 기본 자료형 종류도 int, float, complex, boolean, str입니다. 이 자료형의 기본 크기도 다른 언어와 매우 다르기 때문에 깊이 파고들수록 새로운 특징을 배울 수 있습니다.
현재까지 학습한 수준에서 이야기하자면, STL 라이브러리를 활용하여 알고리즘을 구현하는 것이 중요합니다. C++이 파이썬보다 빠르다는 사실을 알고 있었지만, 동일한 알고리즘을 파이썬과 C++로 구현하여 테스트 케이스 실행 속도를 비교했을 때 C++ 코드가 월등히 빠른 것을 실제로 확인할 수 있었습니다.
아두이노 보드를 활용한 산학 과제를 진행했지만, 프로그래밍 언어에 대한 이해나 협업 및 유지/보수에 대한 고려 없이 작동만 목표로 주먹구구식 코드를 작성한 경험 뿐입니다. 이후 C언어에 대한 이해가 생기면 특징 분석을 진행할 예정입니다.
C++ 코드 작성을 완료한 후 C언어 라이브러리를 활용한 알고리즘 코드 작성을 계획하고 있습니다. 또한, CPython 소스 코드나 STM32 코드를 분석하는 것으로 C언어 이해도를 높이고자 합니다.