[TIL] 250808

๊น€์„ธํฌยท2025๋…„ 8์›” 8์ผ

โœ๏ธToday I Learned

๐Ÿ“… 2025-08-08

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ
  • UE - ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์„ค๊ณ„

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ

๋ฌธ์ œ ๋งํฌ
๋ฌธ์ œ ์„ค๋ช…
ํŠธ๋Ÿญ ์—ฌ๋Ÿฌ ๋Œ€๊ฐ€ ๊ฐ•์„ ๊ฐ€๋กœ์ง€๋ฅด๋Š” ์ผ์ฐจ์„  ๋‹ค๋ฆฌ๋ฅผ ์ •ํ•ด์ง„ ์ˆœ์œผ๋กœ ๊ฑด๋„ˆ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํŠธ๋Ÿญ์ด ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋ ค๋ฉด ์ตœ์†Œ ๋ช‡ ์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š”์ง€ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฆฌ์—๋Š” ํŠธ๋Ÿญ์ด ์ตœ๋Œ€ bridge_length๋Œ€ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฆฌ๋Š” weight ์ดํ•˜๊นŒ์ง€์˜ ๋ฌด๊ฒŒ๋ฅผ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ๋‹ค๋ฆฌ์— ์™„์ „ํžˆ ์˜ค๋ฅด์ง€ ์•Š์€ ํŠธ๋Ÿญ์˜ ๋ฌด๊ฒŒ๋Š” ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
์ œํ•œ์‚ฌํ•ญ

  • bridge_length๋Š” 1 ์ด์ƒ 10,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • weight๋Š” 1 ์ด์ƒ 10,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • truck_weights์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 10,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ํŠธ๋Ÿญ์˜ ๋ฌด๊ฒŒ๋Š” 1 ์ด์ƒ weight ์ดํ•˜์ž…๋‹ˆ๋‹ค.

ํ’€์ด

ํ๋ฅผ ๋‹ค๋ฆฌ ๊ธธ์ด๋งŒํผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ ํ›„ ๋งค์ดˆ ๋‹ค๋ฆฌ ์œ„์˜ ์ƒํ™ฉ์— ๋งž์ถฐ pop๊ณผ push๋ฅผ ์‚ฌ์šฉํ•ด ๊ณ„์‚ฐํ–ˆ๋‹ค.
๋‹ค๋ฆฌ์— ๋งˆ์ง€๋ง‰ ํŠธ๋Ÿญ์ด ์˜ฌ๋ผ๊ฐ„ ํ›„ ์ด ๋ฌด๊ฒŒ๊ฐ€ 0์ด ๋˜๋Š” ์ˆœ๊ฐ„์„ ์ข…๋ฃŒ ์‹œ์ ์œผ๋กœ ๋ดค๋‹ค.

#include <queue>
#include <vector>

using namespace std;

int solution(int bridge_length, int weight, vector<int> truck_weights) {
    int answer = 0;
    queue<int> bridge;
    // ํ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
    for(int i=0; i<bridge_length; i++)
    {
        bridge.push(0);
    }
    int total_weight=0;
    int i=0;
    bool isFinished = false;
    while(!isFinished)
    {
        for(int j=0; j<bridge_length; j++)
        {
            answer++;
            total_weight-=bridge.front();
            bridge.pop();
            // ์ข…๋ฃŒ ์กฐ๊ฑด
            if(i==truck_weights.size() && total_weight == 0)
            {
                isFinished = true;
                break;
            }
            if(i<truck_weights.size() && total_weight + truck_weights[i]<=weight)
            {
                total_weight+=truck_weights[i];
                bridge.push(truck_weights[i]);
                i++;
            }
            else bridge.push(0);
        }
    }
    return answer;
}

UE - ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์„ค๊ณ„

1. ๋ ˆํผ๋Ÿฐ์Šค

1.1 ํ•˜๋“œ ๋ ˆํผ๋Ÿฐ์Šค
ํด๋ž˜์Šค์— ๋ฏธ๋ฆฌ ์ •์˜ํ•˜๋Š” ๊ฒƒ. ์ •์˜๋˜์–ด ์žˆ๋Š” ๊ฒƒ๋“ค์€ ๋ชจ๋‘ ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋œ๋‹ค.
์ฒ˜์Œ๋ถ€ํ„ฐ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ๋“ค๋„ ๋‹ค ๋ฏธ๋ฆฌ ๋กœ๋“œ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

1.2 ์†Œํ”„ํŠธ ๋ ˆํผ๋Ÿฐ์Šค
TSoftObjectPtr<type>: ๊ฒฝ๋กœ๋งŒ ์ €์žฅํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ ๋กœ๋“œํ•œ๋‹ค.

1.3 ์‚ฌ์šฉ๋ฒ•

  1. ๋™๊ธฐ ๋กœ๋“œ
    ๊ฒฝ๋กœ์— ํ•ด๋‹นํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ฆ‰์‹œ ๋กœ๋“œํ•œ๋‹ค. ๋กœ๋“œํ•˜๋Š” ์‹œ๊ฐ„ ๋™์•ˆ์€ ํ•ด๋‹น ํ”„๋ ˆ์ž„์ด ๋ฉˆ์ถœ ์ˆ˜ ์žˆ๋‹ค.
    ๋กœ๋”ฉ ํ™”๋ฉด์ด๋‚˜ ๋ฉ”๋‰ด์ฒ˜๋Ÿผ ์–ด์ฐจํ”ผ ๋ฉˆ์ถฐ๋„ ๋˜๋Š” ์‹œ์ ์— ์‚ฌ์šฉํ•œ๋‹ค.

  2. ๋น„๋™๊ธฐ ๋กœ๋“œ
    ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ๋กœ๋“œ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋กœ๋“œ ๋๋‚ฌ์„ ๋•Œ ์ฝœ๋ฐฑ์„ ๋ฐ›์•„์„œ ์ ์šฉํ•œ๋‹ค. ๊ฒŒ์ž„ ์ง„ํ–‰์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

1.4 ํƒ€์ž…

  1. TSoftObjectPtr<type>
    ์˜ค๋ธŒ์ ํŠธ, ์—์…‹ ์šฉ
    ๋ฉ”์‹œ, ํ…์Šค์ฒ˜, ์‚ฌ์šด๋“œ ๋“ฑ์— ์‚ฌ์šฉํ•œ๋‹ค.
  2. TSoftClassPtr<type>
    ํด๋ž˜์Šค ์šฉ
    ์•กํ„ฐ, ์ปดํฌ๋„ŒํŠธ, ์–ด๋นŒ๋ฆฌํ‹ฐ ๋“ฑ์— ์‚ฌ์šฉํ•œ๋‹ค.

2. ์—์…‹ ๋งค๋‹ˆ์ €์™€ ๋ฒˆ๋“ค ์‹œ์Šคํ…œ

2.1 Primary Asset
์—์…‹ ๋งค๋‹ˆ์ €๊ฐ€ ํŠน๋ณ„ ๊ด€๋ฆฌํ•˜๋Š” ์ค‘์š” ์—์…‹

2.2 Bundle System
Primary Asset๋“ค์„ ์šฉ๋„๋ณ„๋กœ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•œ๋‹ค.

3. ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์„ค๊ณ„์˜ 3๋‹จ๊ณ„ ์ง„ํ™”

3.1 ๊ฐ’ ์ถ”์ถœ
ํ•˜๋“œ ์ฝ”๋”ฉ๋œ ์ˆซ์ž๋ฅผ ์™ธ๋ถ€ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋‹จ๊ณ„
๊ตฌ์กฐ์ฒด๋กœ ์ •์˜ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ CSVํŒŒ์ผ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
๋””์ž์ด๋„ˆ๊ฐ€ CSVํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ˆ˜์ •ํ•ด์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค.

3.2 ๋™์ž‘ ์ถ”์ƒํ™”
ํ–‰๋™ ๋ฐฉ์‹์„ ๋ฐ์ดํ„ฐ๋กœ ๊ต์ฒดํ•˜๋Š” ๋‹จ๊ณ„
๋™์ž‘์„ ๋…๋ฆฝ๋œ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ ๋‹ค. -> ์–ด๋นŒ๋ฆฌํ‹ฐ

3.3 ์ •์˜ ๋ฐ์ดํ„ฐํ™”
๊ฒŒ์ž„ ์ž์ฒด๋ฅผ ๋ฐ์ดํ„ฐ๋กœ ์ •์˜ -> Experience


๐Ÿ’ก ๋А๋‚€ ์  (What I Felt)

๐Ÿ˜ซ

์ถœ์ฒ˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค: ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ
์ถœ์ฒ˜: ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

0๊ฐœ์˜ ๋Œ“๊ธ€