오늘은 프로그래머스 데브코스 인지과정 6기를 처음 시작하는 날로, 과정에 대한 OT와 과정을 위한 기초적인 지식인 Git과 C++에 대한 학습을 위주로 진행하였다.
Git은 형상 관리와 버전을 관리하기 위한 Tool로 사용자의 PC(Local Repository)에 분산 저장되는 시스템이다. GitHub는 Git을 사용한 도구로 호스팅이 가능하며, 서버에 저장하는 중앙 집중식 시스템이다.
C++은 가장 많이 사용되는 프로그래밍 언어 중 하나로, C++은 변수를 생성할 때 자료가 결전되며, 소멸할 때까지 자료가 바뀌지 않는 특성을 갖고 있다. 이를 Type Safe라고 하며, C++에는 여러 가지의 내장 자료형을 갖고 있다.
const int max_num = 987654321;
C++에는 다음과 같은 다양한 종류의 데이터 타입(자료형)을 갖고 있다.
char a = 'B';
char a = 120;
int a = 10;
long long a = 987654321234567890;
long long b = 123ll;
float f = 1.2f;
double a = 3.4;
bool isTrue = false;
# auto 타입을 사용하면, 초기값에 따라 타입을 추론하여 사용한다.
auto x = 123;
auto x = 'A';
auto x = ture;
...
자료형을 사용할 때에는 Overflow가 발생할 수 있음을 주의해야 한다. 보통 산술 연산 과정에 있어서 Overflow 현상이 자주 발생할 수 있다. 실수의 경우 지수 비트와 가수 비트를 활용하여 데이터를 표현하므로, 일부 오차가 발생할 수 있다. 따라서, equal(=)을 이용한 직접적인 비교보다는 x < 1e-10과 같이 오차를 기반으로 비교하는 것이 바람직하다. 1e-10과 같은 기준 오차를 '입실론 상수'라고 한다.
변수를 대입하거나 함수의 인자 등으로 사용할 때, 데이터의 복사가 발생한다. 메모리의 주소만 복사하는 경우에는 참조 전달, 값을 통째로 복사하는 경우에는 값 전달이라 말한다. 기본 자료형은 값 전달로 전달되지만, & 라는 참조 전달자를 통해 참조 전달이 가능하다. 참조를 위한 변수는 &를 사용해 변수를 생성해 주어야 한다.이 때 값은 반드시 Left Value가 되어야 한다. C++ 11부터는 Right Value를 받을 수 있는 참조자 &&가 추가로 제공된다.
int x; // 실제 메모리를 할당받은 변수 x(Left Value)
int& rx = x; // rx와 x 모두 같은 메모리 주소를 가르킨다.
int& func() { ... } // 지역변수를 리턴하는 경우, 함수의 끝과 함께 변수가 소멸되므로 Dangling Pointer가 됨
# 축약형 산술 연산을 사용하는 경우에는, 유용하게 사용할 수 있음(const를 사용)
struct Matrix{
Matrix& operator+=(const Matrix& rhs){ ... }
}
Git과 C++에 대한 내용은 학부 때 수업으로 들었던 내용이기에 어려움이 없었다. 학교에서도 되게 빡센 교수님한테 수업을 들었었기에 아직도 많이 기억에 남아있었다.
아직은 궁금한 점은 없었다.
처음 수업을 진행하는 날이기에 기대 반 걱정 반으로 수업에 참여했다. 매니저님들과 멘토분들이 너무 친절하고 설명을 잘해주셔서 따라가기 좋았다.
생각보다 더 빡센 과정으로 예상되고, 하루를 놓치고 밀리기 시작하면 너무 힘들어질 것 같다. 5개월이란 긴 시간동안 잘 따라갈 수 있도록 열심히 해야겠다!
📌 프로그래머스 데브코스 6기 자율주행 인지과정(Perception) 수강 내용을 바탕으로 정리한 TIL 입니다.
📅 Today: 2023. 9.18.