260226 TIL - 챕터3 팀프로젝트 13일차
2026. 2. 26. 22:54ㆍ언리얼 7기 본캠프
//멀쩡한 사각형 문제. 처음엔 이게 무슨 소린가... 싶었는데 일단 가장 작은 단위의 사각형을 구하고(최대공약수를 나눔)
//그 사각형의 범위를 조금씩 바꿔가며 수를 계산해보자, 영향받는 사각형의 갯수가 최소w + 최소h - 1 이라는 결과가 나옴
//그래서 이 결과값에 처음 나눴던 최대공약수를 곱해주면 영향받는 전체 사각형의 수가 나왔음
#include <numeric>
using namespace std;
long long solution(int w,int h) {
long long answer = 1;
long long longw = w, longh = h;
int GCD = gcd(w,h);
long long size = longw * longh;
int wmin = w / GCD;
int hmin = h / GCD;
int mindisabled = wmin + hmin - 1;
long long disabled = mindisabled * GCD;
answer = size - disabled;
return answer;
}
//시소 짝궁 문제. 2미터 3미터 4미터일 경우 동일자리, 3:2, 2:1(4:2), 4:3 총 4가지 케이스가 나옴
//이 4가지 케이스에 해당하는 경우의수를 더하고, 심플하게 더해주면 끝. 다만 케이스의 범위를 구하는 과정에서 약간의
//문제가 있어서, 수식을 여러번 고쳐야 했음... 부등호를 반대로 쓰거나 잘못쓰는 성향을 좀 고칠 필요가 있을듯
#include <string>
#include <vector>
using namespace std;
long long solution(vector<int> weights) {
long long answer = 0;
vector<long long> count(1001, 0);
for(long long i = 0; i < weights.size(); i++)
{
count[weights[i]]++;
}
for(long long i = 100; i < count.size(); i++)
{
long long caseA; // 동일
long long caseB; // 3:2
long long caseC; // 4:2
long long caseD; // 4:3
caseA = count[i] * (count[i] - 1) / 2;
if (i % 2 != 0 || i * 3 / 2 > 1000) caseB = 0;
else caseB = count[i] * count[i * 3 / 2];
if (i > 500) caseC = 0;
else caseC = count[i] * count[i * 2];
if (i % 3 != 0 || i * 4 / 3 > 1000 ) caseD = 0;
else caseD = count[i] * count[i * 4 / 3];
answer += caseA + caseB + caseC + caseD;
}
return answer;
}
오늘은 코드를 전체적으로 점검하며 작동안되는 부분이나 버그들을 고치는데 집중을 했음. 특히 UX적으로 불편했던 장착슬롯->퀵슬롯 드래그가 적용되게 구현했고, 소비아이템을 퀵슬롯에 올릴 경우 퀵슬롯을 누르면 아이템이 즉시 사용되고 기존에 장착된걸 유지하는 로직, 그리고 아무것도 없는 퀵슬롯을 누르면 무기가 해제되고 맨손이 되는 로직까지 구현함
'언리얼 7기 본캠프' 카테고리의 다른 글
| 260303 TIL - 챕터3 팀프로젝트 마감 D-2 (0) | 2026.03.03 |
|---|---|
| 260227 TIL - 챕터3 팀프로젝트 14일차 (0) | 2026.02.27 |
| 260225 TIL - 챕터3 팀프로젝트 12일차 (0) | 2026.02.25 |
| 260224 TIL - 챕터3 팀프로젝트 11일차 (0) | 2026.02.24 |
| 260223 TIL - 챕터3 팀프로젝트 10일차 (0) | 2026.02.23 |