Programming
- 
          [백준] 1038번 : 감소하는 수Programming/문제풀이 2025. 10. 20. 00:15https://www.acmicpc.net/problem/1038 💡 접근법이전에 사전 문제를 풀었던게 생각나서 그 문제랑 비슷하게 풀었다 ( https://www.acmicpc.net/problem/1256 ) 우선 이 문제를 두 단계로 분리하자면1. 지금 내가 찾는 숫자가 어떤 범위에 있는지 와 2. 실제 숫자가 뭔지를 찾는 두 단계로 나눠야 한다 1. 지금 내가 찾는 숫자가 어떤 범위에 있는지 찾기기본적으로 한 숫자가 정해지면, 그 뒤의 숫자들은 이 앞자리 숫자에 종속이 된다경우의 수들을 쭉 쓰다보면, 5421 라는 감소수는 4가 가장 앞자리인 숫자의 맨앞에 5를 더한 것과 같다5가 가장 앞자리인 4자리 숫자들 중, 그 다음 수가 4___ 인 경우의 수는, 4가 가장 앞자리인 3자리 수와 같다즉.. 
- 
          [백준] 1005번 : ACM CraftProgramming/문제풀이 2025. 10. 18. 19:05https://www.acmicpc.net/problem/1005 💡 접근법N은 10^3, D는 10^5 => 정답 영역은 10^8 (int 사용 가능)D는 0도 가능하다. 특정 노드에 도착했다고 바로 반환하면 안됨건설이 동시에 가능하다는 것이 독특하다. 선행 건물들 중 가장 큰 값만 채택하면 된다문제에서 지정한 건물만 지을 수 있으면 되기 때문에, 모든 건물을 지을 필요는 없다.역순으로 필수 건물부터 시작해서, BFS 로 조건 건물들을 순회하면 된다.이렇게 가다보면 조건이 없거나, 이미 건설된 경우에 반환된다 건설 순서에 따라, 이미 지은 건물일 수 있으며, 실행 순서에 따라 이전에 계산했던 값이 필요한 상황이 생긴다이전에 계산한 결과를 캐싱할 필요가 있다여러 횟수를 반복하기 때문에 데이터를 다시 세.. 
- 
          [백준] 2295번 : 세 수의 합Programming/문제풀이 2025. 10. 10. 21:18https://www.acmicpc.net/problem/2295 💡 접근법N은 1000보다 작은 값이지만, 시간 단위가 1초이기 때문에 시간 초과를 고려해야 한다 임의의 3개의 수를 어떻게 고를지가 관건인데 3, 4, 8, 10, 15, 18, 20 이라고 생각해보면{3,4,8} {3,4,10} {3,4,15} 이렇게 끝 값을 하나씩 옮겨가면서 처음에 케이스를 구하게 되는 걸 보면결국 2개의 값을 어떻게 구하는지가 중요하구나! 라는 생각이 들게 된다.2개를 구하고 저장해두었다면 그 값들만 가지고 만들 수 있는 수가 있는지만 찾으면 된다!2개의 덧셈 값을 구하고, 나머지 하나의 값을 끼워맞춘다덧셈 값을 일반 배열에 넣으면 중복값이 늘어날 것이기 때문에 set 자료구조를 사용하도록 하자이 문제의 조건에서.. 
- 
          [Effective C++] 46: 타입 변환이 바람직할 경우에는 비멤버 함수를 클래스 템플릿 안에 정의해 두자Programming/Effective C++ 2023. 8. 6. 18:53포인트 모든 타입에 대해 암시적 타입 변환을 지원하는 템플릿과 관계가있는 함수를 제공하는 클래스 템플릿을 만들려고 한다면, 클래스 템플릿 안에 프렌드 함수로 정의한다 클래스 템플릿 안에 작성하면 인라인으로 정의되므로 도우미 함수를 따로 생성한다 정리 항목 24 : 타입 변환이 모든 매개변수에 대해 적용되어야 한다면 비멤버 함수를 선언하자 와 관련이 있는 항목 ✔️ 이전의 예시를 템플릿으로만 바꿔주자 template class Rational { public: Rational (const T& numerator = 0, const T& denominator = 1); const T numerator() const; const T ddenominator() const; }; template const Rat.. 
- 
          [Effective C++] 45: "호환되는 모든 타입" 을 받아들이는 데는 멤버 함수 템플릿이 직방!Programming/Effective C++ 2023. 7. 31. 18:16(처음엔 이름이 길다고 생각했지만 보면 볼수록 항목 이름을 간결하게 잘 지은 것 같다) 포인트 모든 타입을 받아들이는 멤버 함수를 만들려면 멤버 함수 템플릿을 쓰면 된다 복사 생성자와 복사 대입 연산자는 직접 선언해야 한다!! 정리 - 스마트 포인터 : 힙 기반 자원을 타이밍맞게 삭제해준다 (항목 13 참고) - 반복자 iterator : 단순연산을 지원한다 ( ++, -- 등) 포인터 : 암시적 변환을 지원함. 스마트포인터는 각 포인터들이 별개이기 때문에 변환 클래스를 직접 만들어야 한다 -> std::static_pointer_cast() 을 쓰면 Cast 가 되는 것 아닌가? 더보기 책이 옛날책이라 auto_ptr 을 사용하는 예시를 쓰고있다 ! 항목13에는 shared_ptr 이 tr1 라이브러리.. 
- 
          [Effective C++] 44: 매개변수에 독립적인 코드는 템플릿으로부터 분리시키자Programming/Effective C++ 2023. 7. 31. 17:01포인트 템플릿으로 코드 비대화가 생긴다. (암시적이기 때문에) 템플릿 매개변수를 함수 매개변수나 멤버 데이터로 넣음으로써 해결할 수 있다. 동일한 이진 구조(long, int) 에 대해서는 한가지 함수 구현(void)을 공유하게 만든다. 정리 코딩 시간 절약, 코드 중복 회피라는 템플릿의 장점을 누리다보면 코드 비대화 (code bloat)가 발생한다. -> 코드 비대화 : 똑같은 애용의 코드와 데이터가 여러 벌로 중복되어 이진 파일로 구워진다) 코드 비대화를 해결하기 위한 방법 공통성 및 가변성 분석 어렵게 써놓았지만,, 코드 비대화를 해결하기 위해 평소에 코드의 비슷한 부분을 추려서 함수로 빼고, 그 부분이 필요한 곳에 함수들을 호출하도록 바꾸는 과정. 클래스와 템플릿에도 동일한 과정을 거치면 됨 그.. 
- 
          [Effective C++] 43: 템플릿으로 만들어진 기본 클래스 안의 이름에 접근하는 방법을 알아두자Programming/Effective C++ 2023. 7. 23. 17:14포인트 파생 클래스에서 기본 클래스 템플릿의 이름을 참조할 때는, this-> 를 붙이거나 기본 클래스 한정문을 명시적으로 써준다 예제 코드 (대부분은 비워놓은 내부 코드들) #include using namespace std; class CompanyA { public : void sendCleartext(const string& msg) {}; }; class CompanyB { public: void sendCleartext(const string& msg) {}; }; class CompanyZ { public: void sendCleartext(const string& msg) {}; }; class MsgInfo { }; template class MsgSender { public: void .. 
- 
          11. AnimationProgramming/그래픽스 2023. 3. 20. 23:02지금까지 게임 엔진 게임 구조 디자인 패턴 인풋, 인터랙션 충돌검사 AI 이제는 애니메이션! 이후엔 Visualization, Network AI Individual Controller : 하나의 에이전트 Abstract Controller : 전체적인 전략 sensor, memory, resoning core(FSM, rule), action system actionAI, Tactical AI 이러한 엔피씨들의 액션이 정해지면 그래피컬하게 보여줘야 한다! → 애니메이션 Animation 사전적 의미 : 움직이는 것처럼 착각을 주는 과정 drawing, model, inanimate objects (점토 애니메이션) 어떤 것을 움직이나? 공 : 실제 물리법칙을 써서 표현할 수 있다 차 구름 Charact..