개발자 능력치 물약(20)
-
효과적인 말하기 방법
출처: https://youtu.be/Unzc731iCUY 글쓰기나 대화를 통해 다른사람들에게 아이디어를 전달하는것은 정말 중요하다. 우연한 계기로 이 영상을 접했고 까먹지 않기 위해 글로 정리해보려한다.1. 서론성공은 말하기 능력, 글쓰기 능력, 아이디어의 질에 의해 결정됨 (이 순서대로)지식 × 연습 × 재능이 중요 (재능은 그다지 중요하지 않음)2. 기본 규칙 효과적인 의사소통의 중요성청중과의 상호작용 방식3. 발표 시작하기 농담으로 시작하지 말 것 (초반에는 청중이 준비되어 있지 않음) : 발표 초반에는 발표자의 음성에 사람들이 적응하느라 잘 웃지 않는다.약속(promise)으로 시작할 것: 강연이 끝나면 무엇을 알게 될지 청중에게 알려주기청중에게 들을 이유를 제공하기4. 네 가지 발표 기..
2025.04.07 -
디자인패턴: 싱글톤, 팩토리, 전략패턴
Gof 디자인 패턴프로그래머 선배님들의 노하우가 깃든 방식이다.객체지향 개념에 따른 설계중에서 재사용할 경우에 유용한 것을 디자인 패턴으로 정립한 것이다. solid원칙과 공통되는 점들이 많다. 싱글톤 시스템에서 어떤 자원이 공유될때 사용한다. 예를 들어 게임의 키입력부분, 핸드폰의 카메라는 여러 클래스에서 공유한다.단 하나의 클래스로 관리를 하게 만드는 것이 싱글톤이다. 한 클래스에서 오직 하나의 객체만을 생성한다. 생성자가 private으로 선언되어있음.생성자 호출로 객체를 생성할 수 없고 public 메소드인 getInstance()로 객체를 반환해서 사용한다.관리가 편하다.팩토리 메소드추상클래스에서 인터페이스를 제공하고 자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 한다.즉 객체생성을 ..
2025.03.27 -
복사생성자, 상속, 다형성
복사생성자복사생성자는 선언하지 않아도 컴파일러가 기본으로 생성해준다.복사생성자가 쓰이는 경우1. 같은 종류의 객체로 초기화할때2. 객체를 함수에 전달할때3. 함수에서 객체를 반환할때 복사는 얕은복사, 깊은복사가 있는데얕은복사 -> 주소 값을 복사한다. 같은 메모리 공간을 공유하고있음. 깊은복사 -> 새로운 메모리 공간에 할당하여 복사해줌.복사생성자에서 동적생성을 한다면 메모리를 공유하는 객체가 소멸되면 같은 주소를 가지는 다른 객체의 메모리도 날아가는 상황이 발생할수있음. 이럴때 직접 복사생성자를 선언해야함(깊은 복사) 상속클래스의 중복을 최소화하고 재사용을 위해 사용한다. (is-a)관계자식클래스가 private을 제외한 부모클래스의 모든 멤버함수, 변수를 상속받음. public, protected ..
2025.03.27 -
SOLID 원칙
SOLID 원칙은 유지보수성과 확장성이 뛰어난 소프트웨어를 설계하는 데 도움을 주는 객체 지향 설계 원칙이다.SOLID는 다음 5가지 원칙의 앞글자를 따서 만든 약어다.대부분의 디자인패턴은 solid원칙을 기반으로 파생되었다.Single Responsibility Principle (SRP) - 단일 책임 원칙Open/Closed Principle (OCP) - 개방-폐쇄 원칙Liskov Substitution Principle (LSP) - 리스코프 치환 원칙Interface Segregation Principle (ISP) - 인터페이스 분리 원칙Dependency Inversion Principle (DIP) - 의존 역전 원칙1. 단일 책임 원칙 (Single Responsibility Princ..
2025.03.24 -
백준 14490 백대열: 문자열파싱/ 최대공약수 구하기
문제 :문자열을 입력받아 정수로 변환하고 최대공약수를 구해 나누는 문제였다입력n과 m이 :을 사이에 두고 주어진다. (1 ≤ n, m ≤ 100,000,000)ex) 10:1, 18:24출력두 수를 최대한으로 약분하여 출력한다. 작성코드#include #include #include using namespace std;int main(){ //입력 n:m n과m의 최대공약수로 나누기 string inputNums; cin >> inputNums; //18:24 3:4 string A{}, B{}; int a{}, b{}, grad{}; //문자열을 ':'기준으로 잘라서 왼쪽을 a, 오른쪽을 b에 넣기 A = inputNums.substr(0,inputNums.find(":")); B = inputN..
2025.03.17 -
2025/03/17
📅 오늘의 일정시간학습 내용방식목표 시간목표내용달성여부13:00 ~ 13:40 (40분)기초 코테 3문제 풀이 (뇌 깨우기)🔄 문제 풀이 기반 학습X(14:30 까지 밥먹음)13:40 ~ 14:50 (70분)이론 학습: 병합 정렬 & 퀵 정렬📖 핵심 개념 요약백준 4문제 풀고 깃헙연동(문자열 파싱 , 최대공약수스택, 벡터 문제)14:50 ~ 16:20 (90분)병합 정렬 구현 (연결 리스트 기반)퀵 정렬 구현(배열 기반)✍ 직접 구현O(STL 없이 구현 & 비교)16:20 ~ 16:30 (10분)☕ 짧은 휴식🚶♂️ 가벼운 스트레칭집중력 회복16:30 ~ 17:50 (80분)STL 학습 (트리, 맵, 셋) & 직접 구현 연습🔥 실습 중심 학습O(STL 사용법 익히고 문제 풀이)17:50 ~ 1..
2025.03.17