2023-11-13
기하학 과제, 점에 관한 정보를 담는 Point클래스와 Geometry 클래스로 다양한 연산을 하는 과제를 풀고 있다.
오늘은 다음과 같은 함수들을 구현했다.
- Point 클래스
int형 정수 x, y로 점에 대한 정보를 담는 클래스. - Geometry 클래스
Point 객체를 받아서 배열에 추가하고, 거리를 출력하고, 교차점을 알아내는 클래스
객체를 받아서 배열에 추가하고 불러오는 것까지 구현했고. 거리를 출력하는건 피타고라스의 정리를 이용해서 구현중이다. 교차점을 알아내는 클래스는 직선의 방정식에 비교할 점을 계산해서 음수, 양수로 판별하는 식을 구현할것이다. (내일)
오늘은 Obsidian을 git에 연동해서 스터디 노트를 좀 더 체계화해서 관리하게 되었다.
스터디를 소홀하게 해서 [탈락] 선언을 들으면 UNICEF에 최대 100만원을 기부하겠다.
오늘 백준은 아래와 같은 문제를 풀었다.
25083, 3003
-
첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.
첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.
조금만 생각해보면 풀 수 있는 문제였다. 재밌었던 건, if문을 사용하지 않고 단 하나의 식으로 코드를 구현할 수 있었다는 것.answer_value[i] -= input_value[i] - chess_piece_value[i];
25083번 문제는 아스키코드로 이루어져있는 새싹 그림을 출력하는거였는데. 이스케이프 문자열만 사용할 수 있으면 쉽게 풀 수 있는 문제였다.
- 친구 클래스?
오늘 새롭게 알게 된 친구 클래스, 이런 게 C++에 있다니 신기하다. private로 선언한 클래스의 멤버에 friend로 등록하면 등록된 클래스에서 접근할 수 있다. 근데 단방향이다. friend로 등록한다고 양방향으로 접근할 수 있는 것은 아니다.
멤버 함수 선언 끝에 const를 붙임으로써 안정성을 향상할 수 있는것도 오늘 처음 알았다.int GetX() const { return x_; }
이외에 또 알아낸 건...
- 포인터 타입의 멤버 함수에 접근하려면 . 연산자 대신 -> 를 사용한다.
- 클래스의 멤버 함수는 무조건 객체를 통해서만 접근할 수 있다. 하지만 Class:Class() 와 같은 생성자 선언은 클래스의 정적 컨텍스트에서 사용되는 특별한 경우이다.
내일은 기하학 과제를 마무리하고 몬티홀 딜레마에 대한 증명을 할 예정이다.
최종 평가
최고급 평가사 일론머스크의 평가
-------------------------------
[평가 대상]
2023-11-13의 학습 내용
[학습 내용 요약 및 평가]
1. **Point 및 Geometry 클래스 구현**: 점과 기하학적 연산을 처리하는 클래스 구현에 대한 설명은 개념적 이해와 실제 적용을 잘 조화시키고 있습니다. 피타고라스 정리를 이용한 거리 계산과 교차점 판별 알고리즘에 대한 접근 방식은 특히 인상적입니다.
2. **Git과 Obsidian 연동**: 학습 자료의 체계적 관리를 위한 도구 활용은 효율적인 학습 방법을 반영합니다. 기술적 능력과 학습 관리 능력이 조화롭게 발전하고 있음을 보여줍니다.
3. **Baekjoon 문제 25083, 3003**: 문제 해결 접근 방식에서 창의성과 효율성을 보여줍니다. 특히, 조건문 없이 계산을 수행하는 방식은 프로그래밍 능력의 성숙도를 나타냅니다.
4. **친구 클래스와 const 사용**: C++의 고급 기능에 대한 학습은 객체지향 프로그래밍에 대한 이해를 심화시킵니다. 특히, 멤버 함수의 const 사용과 관련하여 안정성을 향상시키는 방법에 대한 이해는 중요합니다.
5. **포인터 타입의 멤버 함수 접근**: 객체 지향 프로그래밍에서 포인터와 객체의 상호 작용에 대한 이해는 필수적입니다. 이 부분에 대한 학습은 깊이 있는 프로그래밍 지식의 발전을 보여줍니다.
[개선 및 보완점]
- **교차점 알고리즘**: 교차점 알고리즘의 구체적인 구현에 대한 예시나 예정된 작업에 대한 더 자세한 설명이 필요합니다.
- **오류 처리와 예외**: 구현된 클래스와 함수에서 오류 처리와 예외 사항에 대해 좀 더 고려해 볼 필요가 있습니다.
[점수]
91/100
[추가 코멘트]
오늘의 학습 활동은 지난 평균보다 약간 높은 수준을 보여줍니다. 하지만, 계속해서 일관된 학습 노력을 기울여야 합니다. 탈락 방지를 위한 동기 부여 방법은 매우 창의적이며, 사회적 책임감을 반영합니다.
'일일 스터디노트' 카테고리의 다른 글
231115: 기하학 AllEquationsCheck! (0) | 2023.11.15 |
---|---|
231114: CGV 알림, 몬티홀 딜레마, 기하학, 피타고라스, 다이아몬드 찍기 (0) | 2023.11.14 |
231112: 초기화 리스트와 this-> (0) | 2023.11.13 |
231111: 버퍼 이슈와 직선의 방정식 (0) | 2023.11.12 |
231110: 유튜브 Rebuild! 수학 .. (0) | 2023.11.11 |