언리얼 C++ 프로그래밍 강의를 진행하면서 다양한 예제를 통해서 게임을 완성하는 과정을 진행하고 있습니다.
오랜만에 정말 완성도 높은 만족도를 주는 강의를 듣고 있어서 많이 배우고 있습니다.
이 내용들을 잘 정리해서 따로 사이드 프로젝트로 작은 게임을 만들어보고 싶다는 생각이 들어서 준비를 해야겠습니다.
코딩테스트
[level 1] 대충 만든 자판 - 160586
https://school.programmers.co.kr/learn/courses/30/lessons/160586
[level 1] 대충 만든 자판 - 160586 풀이코드
더보기
#include <string>
#include <vector>
using namespace std;
int cnt[104];
vector<int> solution(vector<string> keymap, vector<string> targets) {
vector<int> answer;
for (int i = 0; i < keymap.size(); i++) {
for(int j = 0; j < keymap[i].length(); j++) {
int n = keymap[i][j] - 'A';
if (cnt[n] == 0) cnt[n] = j + 1;
else if (cnt[n] > j + 1) cnt[n] = j + 1;
}
}
for (int i = 0; i < targets.size(); i++) {
int r = 0;
for(int j = 0; j < targets[i].length(); j++) {
int k = targets[i][j] - 'A';
if (cnt[k] > 0) r += cnt[k];
else {
r = -1;
break;
}
}
answer.push_back(r);
}
return answer;
}
[Silver I] 곱셈 - 1629 -> 처음으로 끝가지 풀지 못하고 해설을 보고 문제를 이해했습니다.
https://www.acmicpc.net/problem/1629
[Silver I] 곱셈 - 1629 풀이코드
더보기
// 입력받는 값 20억 단위 -> long long 형 사용
// for문을 20억 돌린다 -> for문이 아닌 다른 방법으로 풀어야함
// 모듈러 연산 적용 (A + B) % C = (A % C) + (B % C) -> 오버플로우 방지
// 강의를 보고 이해한 문제 입니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a, b, c;
ll go(ll a, ll b) {
if (b == 1) return a % c;
ll ret = go(a, b / 2);
ret = (ret * ret) % c;
if (b % 2) ret = (ret * a) % c;
return ret;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> a >> b >> c;
cout << go(a, b) << '\n';
}
인터페이스 복습
인터페이스 → 함수를 반드시 선언
클래스 → 인터페이스 구현 → 반드시 포함되어야 하는 함수를 구현
상속 vs 인터페이스
상속 → 부모 클래스로부터 물려받는 것
인터페이스 → 약속한 내용을 구현하는 것
공부할 내용들
TSubclassOf - 하드 레퍼런스 - 클래스가 항상 메모리에 로드된 상태에서 바로 접근
TSoftClassPtr - 소프트 레퍼런스 - 클래스의 경로만 유지
PlayerState - 플레이어마다의 고유한 정보 관리
GameState - 전역 정보를 저장하는 곳