❗ New Knowledge
▪ 자료형의 오버플로우
▪ 좋은 설계 : 최대한 클래스의 변경이 없도록 함
응집도 : 클래스 내 모듈들이 관련된 정도
결합도 : 각 모듈들이 서로 얼마나 의존하는지
▪ SOLID 원칙 : 객체 지향 설계 시 주요 원칙 5가지
단일 책임 원칙(SRP) : 클래스는 하나의 책임을 가진다.
개방 폐쇄 원칙(OCP) : 확장에는 열려 있고 수정에는 닫혀있어야 한다.
리스코프 치환원칙(LSP) : 자식 클래스는 부모 클래스에서 기대되는 행동 보장
인터페이스 분리 원칙(ISP) : 각 클래스에 불필요한 메서드를 구현하지 말자.
의존 역전 원칙(DIP) : 인터페이스는 인터페이스를 구현하는 클래스에 의존적이지 않고 둘다 추상화에 의존하자.
▪ 디자인 패턴 : 반복적인 문제를 해결하기 위한 일반화된 솔루션
생성 패턴_싱글톤 패턴
구조 패턴_데코레이터 패턴
행동 패턴_ 옵저버 패턴
▪ RandRange(Min, Max) : 지정된 범위 안의 값 반환
Rand() : 0부터 RAND_MAX 사이의 정수 반환
1️⃣ 알고리즘 코드카타
🔹콜라츠 추측
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(int num) {
long long editNum = num; //int형으로 하면 count 488 뜸
int count = 0;
while (!(editNum == 1)){
if(editNum % 2 == 0)
{
editNum = editNum / 2;
}
else{
editNum = editNum * 3 + 1;
}
count++;
cout << editNum<<endl;
if(count >= 500) return -1;
}
return count;
}
💭자아성찰
출력해서 문제를 파악하는 것에 익숙해질 필요가 있을 듯
문제 : 테스트 케이스가 626331로 주어졌을 때 반복 횟수가 500번을 넘겨 -1을 반환해야 하는데 488번만 반복됨
해결과정 : 질문하기에서 자료형의 범위에 대한 힌트를 얻음
해결 : editNum을 long long 타입으로 변경
2️⃣ 추가 공부
🔹자료형의 오버플로우
자료형의 오버플로우
값이 자료형의 최대값을 초과하면 최소값으로 순환됨1. int크기: 4바이트 (32비트)부호 있는 int (default): -2,147,483,648 ~ 2,147,483,647부호 없는 unsigned int: 0 ~ 4,294,967,2952. long long크기: 8바이트 (64비트)부
yoosorang.tistory.com
🔹정적 바인딩 vs 동적 바인딩
정적 바인딩 vs 동적 바인딩
✔정적 바인딩프로그램 컴파일 시점에 함수 호출이 결정되는 바인딩으로 일반 함수에 해당(non-virtual)빠르고 메모리 사용이 적음 ✔동적 바인딩프로그램 실행 시점에 함수 호출이 결정되는 바
yoosorang.tistory.com
🔹const
const
1. 변수에 사용값을 변경할 수 없게 함const int value = 10;value = 20; // 컴파일 에러: value는 const이므로 변경 불가 2. 포인터와 함께 사용🔹포인터가 가리키는 값이 상수일 때 : const int*const int value = 10;
yoosorang.tistory.com
🔹매개변수 전달 시 *와 &
매개변수 전달 시 *와 &
(1) 포인터를 사용하는 경우1) 값이 없는 상태를 나타낼 필요가 있는 경우2) 함수가 가변적인 대상을 가리켜야 하는 경우3) 동적 메모리 사용 시 (2) 참조를 사용하는 경우1) 값이 항상 존재해야 하
yoosorang.tistory.com
'TIL' 카테고리의 다른 글
[241231 TIL] 언리얼 C++ 한글 폰트 깨짐 (1) | 2024.12.31 |
---|---|
[241230 TIL] C++ 공부_객체 선언, 포인터와 참조 등 (0) | 2024.12.30 |
[241226 TIL] C++ 공부_입력 예외 처리 (0) | 2024.12.26 |
[241224 TIL] Git 사용방법, C++ 공부_포인터 (0) | 2024.12.24 |
[241223 TIL] C++ 실습_vector STL (0) | 2024.12.23 |