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 마무리