분류 전체보기

    10844번: 쉬운 계단 수

    10844번: 쉬운 계단 수사용 언어: C++문제 요약45656이란 수를 보자.이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다.N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다.첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다.첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.풀이이전 자리 숫자와 현재 자리 숫자의 관계를 고려하면 되므로 마지막 숫자만 알면 다음 숫자 선택이 가능. 그래서 점화식 기반 Bottom-Up DP로 채워나가는 식으로 풀어야하고, dp[i][j]는 길이 i, 마지막 숫자 j일 때 계단 수의 개수.점화식- dp[i][j] = dp[i - 1][..

    C++ STL (뇌를 자극하는) - 3장. 함수 객체란

    ※ 제가 개인적으로 공부하는 것이라 요약하거나 책에서 빠진 내용이 있을 수 있습니다 ※Section 1. 함수 객체란함수 객체(Function Object)란 함수처럼 동작하는 객체. 객체가 '()' 연산자를 정의해야 하므로 '()' 연산자를 오버로딩한 객체다. 함수 객체는 함수자(Functor)라고도 불린다.함수 객체 정의 예시struct Functor{ void operator() () { cout "함수 객체!" 출력}functor는 객체지만 함수(functor())처럼 호출 가능. 매개변수를 갖는 함수 객체도 가능. operator() (int a, int b) -> functor(10, 20); 함수 객체의 장점함수처럼 동작하는 객체이므로 다른 멤버 변수와 멤버 함수를 가질 ..

    2579번: 계단 오르기

    2579번: 계단 오르기사용 언어: C++ 문제 요약계단은 아래에서 위로 올라가며, 각 계단에는 점수가 적혀 있음.계단은 1칸 또는 2칸씩 오를 수 있음.단, 연속된 3개의 계단을 모두 밟는 것은 금지됨.마지막 계단은 반드시 밟아야 함.시작점은 계단에 포함되지 않음.주어진 계단 점수 배열에서, 규칙을 지키며 밟을 수 있는 최대 점수의 합을 구하는 문제. 풀이처음엔 재귀로 풀어보려 했지만 연속된 3계단을 밟을 수 없다는 제약 때문에 코드가 복잡해졌고,"더 좋은 방법이 있겠지" 싶어서 Bottom-Up DP 방식으로 전환했다. dp[i] = i번째 계단까지 도달했을 때의 최대 점수두 가지 경우만 고려한다:dp[i-2] + stairs[i] → 한 칸 건너뛰고 오기dp[i-3] + stairs[i-1] + s..

    1932번: 정수 삼각형

    1932번: 정수 삼각형사용 언어: C++ 문제 요약 7 3 8 8 1 0 2 7 4 44 5 2 6 5위 그림은 크기가 5인 정수 삼각형의 한 모습이다.삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다.맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다.풀이문제 예시를 보면 위에서 아래로 가는 그리디 방식은 안된다 -> 전체합이 최대값이 된다는 보장이..

    C++ STL (뇌를 자극하는) - 2장. 함수 포인터

    ※ 제가 개인적으로 공부하는 것이라 요약하거나 책에서 빠진 내용이 있을 수 있습니다 ※Section 1. 함수 포인터란변수 : 값을 저장하는 메모리 공간의 이름포인터 : 주소를 저장하는 메모리 공간의 이름함수 포인터 : 함수의 시작 주소를 저장하는 포인터 함수 포인터는 함수 시그니처(반환 타입과 매개변수 리스트)와 같게 선언한다. 예를 들어, int func(int a, int b)인 함수의 함수 포인터는 (*pf)(int, int)로 선언.함수 포인터의 선언과 사용 예제void Print(int n){ cout Print, pf, *pf의 출력 모두 같은데 Print가 함수의 시작 주소이고, pf도 함수의 시작 주소이고, 메모리 접근 연산자(*)를 pf에 붙여도 마찬가지로 함수의 주소여서 다 같은..

    C++ STL (뇌를 자극하는) - 1장. 연산자 오버로딩 (Section 6~7)

    ※ 제가 개인적으로 공부하는 것이라 요약하거나 책에서 빠진 내용이 있을 수 있습니다 ※Section 6. STL에 필요한 주요 연산자 오버로딩함수 호출 연산자 오버로딩은 객체를 함수처럼 동작하게 하는 연산자입니다. C++에서 Print(10)이라는 함수 호출 문장은 다음 세 가지로 해석할 수 있습니다.1. 함수 호출 : Print가 함수 이름2. 함수 포인터 : Print가 함수 포인터3. 함수 객체 : Print가 함수 객체struct FuncObject{public: void operator() (int arg) const { cout 예제 1-17 정수를 저장하는 간단한 Array 클래스class Array{ int *arr; int size; int capacity; ..

    Unreal Engine 컨테이너 자료구조 정리

    STL 대신 자체 컨테이너 사용 이유일단 UE는 왜 STL 대신 자체 컨테이너를 쓸까?라는 근본적인 질문부터 짚고 넘어가고자 한다. 구현 방식만 보면 사실 기본 STL과 방식은 크게 차이가 나는 것 같지 않다.결론부터 말하자면 엔진 특화 요구 사항과 성능, 호환성 목적 때문이다. 단순히 STL이 느려서 그런게 아니라, 게임 엔진이라는 특수환 환경에 최적화된 설계가 필요해서 그렇다. 1. 엔진 전반적인 메모리 관리 통제Unreal의 목적메모리 사용을 정밀하게 추적하고 관리해야 함 (디버깅, 최적화, 플랫폼별 제약 대응)STL은 new, delete, malloc, free 등을 내부적으로 사용하므로 Unreal의 메모리 추적 시스템(FMemory 등)과 완전히 통합되지 않음Unreal 방식Unreal의 컨..

    C++ STL (뇌를 자극하는) - 1장. 연산자 오버로딩

    ※ 제가 개인적으로 공부하는 것이라 요약하거나 책에서 빠진 내용이 있을 수 있습니다 ※Section 1. 연산자 오버로딩이란C++에서 제공하는 클래스 타입, 즉 사용자 정의 타입에서도 연산자를 사용할 수 있게 하는 문법이다.// 사용자가 정의한 코드class Point{ ...}; int n1 = 10, n2 = 20; 같은 경우 n1 + n2는 컴파일러에 연산이 정의되어 있어서 가능하지만 Point p1 + p2를 생으로 하려면 정의되지 않아서 연산이 불가능하다. 그래서 연산자 오버로딩을 쓰면 정의되지 않은 타입도 연산이 가능하고 코드 직관성, 가독성을 올려준다. Section 2. 연산자 오버로딩 및 정의하기Point 클래스에서 연산자 + 정의 예제#include using namespace std;..