1. Day36

  • 알고리즘 코드카타
  • C++과 Unreal Engine으로 3D 게임 개발
  • CS50x 1주차 마무리

2. CH3 - C++과 Unreal Engine으로 3D 게임 개발(Day36)

  • [7번 과제] Pawn 클래스로 3D 캐릭터 만들기 시작

3. 알고리즘 코드카타

  • 부족한 금액 계산하기(초기 코드)
    • for 문으로 prince * i 만큼의 가격을 누적 덧셈 하여 총 가격 계산
#include <string>
#include <vector>

using namespace std;

long long solution(int price, int money, int count)
{
    long long answer = -1;
    answer = money;
    for (int i = 1; i <= count; ++i)
    {
        answer -= price * i;
    }
    if (answer >= 0)
    {
        answer = 0;
    }
    else
    {
        answer = answer * -1;
    }
    return answer;
}
  • 부족한 금액 계산하기(개선 코드)
    • answer = answer * (count * (count + 1) / 2) - money를 이용 바로 부족한 금액을 계산 그 값이 0이하라면 answer = 0 아니라면 answer 값이 바로 부족한 금액
#include <string>
#include <vector>

using namespace std;

long long solution(int price, int money, int count)
{
    long long answer = price;
    answer = answer * (count * (count + 1) / 2) - money;
    if (answer <= 0)
    {
        answer = 0;
    }

    return answer;
}
  • 문자열 다루기 기본(초기 코드)
    • size()함수로 문자열 길이 판별, for문으로 문자열 순회하며 숫자가 아닌 값이 있다면 false 반환
#include <string>
#include <vector>

using namespace std;

bool solution(string s) {

    if (s.size() != 4 && s.size() != 6)
    {
        return false;
    }

    for (auto& str : s)
    {
        if (str < '0' || str > '9')
        {
            return false;
        }
    }
    return true;
}
  • 문자열 다루기 기본(개선 코드)
    • ‘0’, ‘9’로 숫자인지 아닌지 체크하던 방식을 isdigit함수로 숫자체크
#include <string>
#include <vector>

using namespace std;

bool solution(string s) {

    if (s.size() != 4 && s.size() != 6)
    {
        return false;
    }

    for (auto& str : s)
    {
            // str < '0' || str > '9' 로 체크하던 걸 isdigit(str)로 해결
        if (isdigit(str) == false)
        {
            return false;
        }
    }
    return true;
}
  • 행렬의 덧셈(초기 코드)
    • arr1을 이중 for문으로 순회하면서 같은 행과 열의 길이를 가진 arr2를 arr1에 더한다음 answer = arr1으로 풀이
#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;
    for (int i = 0; i < arr1.size(); ++i)
    {
        for (int j = 0; j < arr1[i].size(); ++j)
        {
            arr1[i][j] = arr1[i][j] + arr2[i][j];
        }
    }
    answer = arr1;
    return answer;
}
  • 행렬의 덧셈(개선 코드)
    • arr1을 이중 for문으로 순회하면서 같은 행과 열의 길이를 가진 arr2를 arr1에 더한다음 arr1를 반환 불필요하게 answer에 복사하는 과정을 생략
#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    for (int i = 0; i < arr1.size(); ++i)
    {
        for (int j = 0; j < arr1[i].size(); ++j)
        {
            arr1[i][j] += arr2[i][j];
        }
    }
    return arr1;
}

4. 역량강화 분반 베이직 실전

  • 프로젝트 구성요소 훑어보기 + UCLASS, GameModeBase
    • 언리얼 엔진 환경 설정 및 포트폴리오 계획 수립
    • UCLASS 및 GameModeBase

5. 팀 프로젝트 대비 언리얼 Git LFS 실습

  • 각자 프로젝트 2개 생성
    • Asset 저장용 하나 거기서 Imigration으로 필요한 부분만 옮겨서 담아둘 프로젝트 하나
  • 추출된 Asset 을 압축해서 Git 마스터한테 전달(클라우드 활용)
  • Git마스터가 실제 작업을 진행할 프로젝트 생성(Git 마스터는 프로젝트 3개 생성)
    • 이 프로젝트에 모든 Asset 취합
    • Github에 Push
    • 프로젝트 통으로 압축 및 공유
  • 각자 받은 압축 파일 해제 후 Add existing repogitory 한 다음 브랜치를 파서 작업
  • 이후 Asset이 추가될 필요가 있다면 모든 브랜치를 pr한다음 정리하고 같은 브랜치로 맞춘 다음 Git 마스터가 Asset을 받아 프로젝트에 추가하고 Push
    • 단 이번에는 모두가 같은 경로에 Asset을 추가하고 Asset과 함께 Git 마스터가 Github에 푸시한 이후의 .git파일도 공유받아 덮어 씌울 것

6. 내일 계획 : CH3 강의 학습, 알고리즘 문제 집중 CS50x 2주차 시작, 과제7 마무리

+ Recent posts