오늘의 목표
- 아침 코드카타
- 언리얼 강의 챕터 3-1 수강
- 언리얼 마스터 라이브세션 참가
- 언리얼 7번 과제 도전기능 구현
추가목표: 언리얼 강의 챕터 3-2 수강
코드카타
[문제] 최소 직사각형
명함의 가로 세로 값이 int** 배열로 주어지고, 해당 명함이 들어갈 수 있는 가장 작은 지갑을 찾는 문제.
[나의 풀이]
처음에는 int** 배열에서 일단 최대 가로값과 세로값을 구한 뒤 최대 가로값과 최대 세로값을 가진 명함을 회전시켜서 나중에 구하려고 했다. 그러니까 회전시키고 나서 다시 최대 가로값과 세로값을 구해야하는 불필요하고 복잡한 함수가 되었다.
[문제 해답]
가로, 세로 모두를 포함한 길이를 순환하며 비교한 뒤 최대 가로값을 고정시키고, 그 이후에 다시 한 번 명함 길이 배열을 순환하며 세로값을 비교한다. 만약 세로값이 가로값보다 길 경우에는 명함을 회전시켜 길이가 긴 쪽을 가로값으로 만든 뒤 세로를 비교하면 된다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int** sizes, size_t sizes_rows, size_t sizes_cols) {
int answer = 0;
int maxLong = 0;
int maxShort = 0;
int temp = 0;
for (int i = 0; i < sizes_rows; ++i)
{
if (!sizes[i]) return -1;
int w = sizes[i][0];
int h = sizes[i][1];
int longSide = w > h ? w : h;
if (longSide > maxLong)
{
maxLong = longSide;
}
}
for (int i = 0; i < (int)sizes_rows; ++i)
{
int w = sizes[i][0];
int h = sizes[i][1];
if (w > h)
{
if (h > maxShort) maxShort = h;
}
else {
if (w > maxShort)
{
maxShort = w;
}
}
}
answer = maxLong * maxShort;
return answer;
}
코딩팁
ctrl + alt + 마우스 클릭 -> 코드에서 여러 부분을 선택해서 동시에 작성 가능
오늘의 아쉬웠던 점
코딩 문제를 풀 때 오래 걸리면 해답을 검색해보는 습관을 들이자. 한 문제를 오래 잡고 있는다고 풀리지는 않는다...
콜리전

Collision


과제

'Unreal5 공부 > TIL' 카테고리의 다른 글
| 2026/04/28 TIL (0) | 2026.04.28 |
|---|---|
| 2026/04/27 TIL (0) | 2026.04.27 |
| 2026/04/23 TIL (0) | 2026.04.23 |
| 2026/04/22 (0) | 2026.04.22 |
| 2026/4/21 TIL (0) | 2026.04.21 |