2026. 1. 26. 21:04ㆍ언리얼 7기 본캠프
코드카타 풀다가 약간 당황스러운(?) 일이 있었는데, 코테사이트를 처음 접하고 둘러보면서 풀었던 문제가 나왔던 것임. 이게 2레벨인줄도 몰랐고 지금 할만한건지도 몰랐는데... 근데 지금보니까 로직이 비효율적인걸 발견해서 좀 더 개선해서 다시 풀어보는 기회도 가졌음. 예전에 쓴 코드를 다시 보면 '내가 이걸 무슨 생각으로 썼지?' 라는 일이 일어난다곤 하던데, 실제로 그걸 경험하니까 좀 놀라고 신선했음
//이전에 풀었던 코드. 대진표에 홀수짝수를 계속 따져가며 하나하나 계산해서, 로직은 맞는데 식이 좀 엉성함
#include <iostream>
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0;
while(true){
answer++;
if ((a-b==1&&a%2==0)||(b-a==1&&b%2==0)){
break;
}
if (a%2 == 1){
a = a/2+1;
} else if (a!=1){
a /= 2;
}
if (b%2 == 1){
b = b/2+1;
} else if (b!=1) {
b /= 2;
}
}
return answer;
}
//개선한 코드. int의 특성상 소숫점은 버려지기에 결국 1을 더하고 2로 나누면 라운드 숫자의 안정된 값이 나옴
//그래서 결국 두 수가 같아질때까지 반복하면 원하는 수를 구할 수 있었음
#include <iostream>
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0;
while(a != b){
a = (a + 1) / 2;
b = (b + 1) / 2;
answer++;
}
return answer;
}
//카펫 코드. 연산 횟수를 줄이기 위해 i * i를 쓰는게 아직 적응이 좀 덜됨...
//멍청하게 넓이 기준으로 사각형 변 구하는법을 까먹어서 검색까지함 ^^;
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int brown, int yellow) {
vector<int> answer;
int total = brown + yellow;
int width, height;
for(int i = 3; i * i <= total; i++){
if(total % i == 0){
int tempw = i;
int temph = total / i;
if((tempw-2) * (temph-2) == yellow){
width = tempw;
height = temph;
break;
}
}
}
// 지금 보니까 그냥 i가 작은수부터니까 i를 height로 두면 min max 안써도 됐을듯?
answer = {max(width, height), min(width, height)};
return answer;
//최소공배수 문제. numeric 헤더의 lcm 함수를 쓰는게 편하겠지만, 최대공약수(gcd)를 구해서 최소공배수를 구하는
//유클리드 호제법이라는걸 배워서 작성해봤음
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> arr) {
int answer = 0;
int a = arr[0];
int gcd;
for(int i = 1; i < arr.size(); i++){
int b = arr[i];
int tempa = a;
int tempb = b;
while(true){
int r = tempa % tempb;
if(r == 0){
gcd = tempb;
break;
}
else{
tempa = tempb;
tempb = r;
}
}
a = (a / gcd) * b;
}
answer = a;
return answer;
}
//물론 numeric 쓰면 이렇게 짧아짐. 이게 더 직관적인거같기도 하고...
#include <string>
#include <vector>
#include <numeric>
using namespace std;
int solution(vector<int> arr) {
int answer = 0;
int a = arr[0];
for(int i = 1; i < arr.size(); i++){
int b = arr[i];
a = lcm(a,b);
}
answer = a;
return answer;
}
}
오늘은 챌린지반 강의가 진행됐고, 기존 강의는 일단 3-4강 듣고 챌린지반 강의에 집중했음
GAS의 기본?인 Attribute Set에 대한 내용이었음. 캐릭터에 사용할 다양한 수치들을 관리하는 요소인데, 강의를 들으면서 보니까 이 방식을 사용하면 직접 구현해서 관리하는것에 비해 어느정도 자동으로 편하게 구현이 되면서도 확장성과 유연성이 좋게 만들 수 있을것 같다고 느낌. 가장 큰 장점은 자동 네트워크 복제 라고 하는데, 아직 언리얼에서의 네트워크에 대한 개념이 확실히 잡히지는 않아서 좀 미묘했음
그래서 강의를 보며 튜터님이 쓰시는걸 같이 구현해보려고 했는데... 어제 밤새서 집중 안됨 + 강의 속도가 무진장 빠름 문제로 결국 중간에 놓친게 많아서 컴파일에러가 왕창 나서 자료랑 다시보기를 통해 복습하며 구현했음...

챌린지반 공부를 하면서 메인공부 따라갈려면 아무래도 시간이 촉박할것 같으니 내일부터 제대로 마음을 다잡고 강의 진도를 빠르게 빼고 과제와 챌린지반 공부에 좀 더 집중을 해야할 것 같음
전문용어가 나올때마다 머리가 띵해지지만 그래도 아직까지 완전히 못따라갈 수준의 수업은 아니어서 어떻게든 따라붙어보려고 노력중
'언리얼 7기 본캠프' 카테고리의 다른 글
| 260128 TIL - Unreal C++ 15일차, 대혼돈 (0) | 2026.01.28 |
|---|---|
| 260127 TIL - 언리얼 C++ 14일차 (0) | 2026.01.27 |
| 260123 TIL Unreal C++ 12일차, 8번과제 (1) | 2026.01.23 |
| 260122 TIL - Unreal C++ 11일차, 7번과제 제출 (1) | 2026.01.22 |
| 260121 TIL - Unreal C++ 10일차 (0) | 2026.01.21 |