โœ๏ธToday I Learned

๐Ÿ“… 2025-07-31

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ
  • ํŒ€ํ”Œ - AI ๊ณต๊ฒฉ ๋ชจ์…˜ ๋ฐœ๋™

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ

๋ฌธ์ œ ๋งํฌ
์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด numbers๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์˜ ๊ฐ ์›์†Œ๋“ค์— ๋Œ€ํ•ด ์ž์‹ ๋ณด๋‹ค ๋’ค์— ์žˆ๋Š” ์ˆซ์ž ์ค‘์—์„œ ์ž์‹ ๋ณด๋‹ค ํฌ๋ฉด์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด ์žˆ๋Š” ์ˆ˜๋ฅผ ๋’ท ํฐ์ˆ˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ •์ˆ˜ ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์›์†Œ์— ๋Œ€ํ•œ ๋’ท ํฐ์ˆ˜๋“ค์„ ์ฐจ๋ก€๋กœ ๋‹ด์€ ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹จ, ๋’ท ํฐ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์›์†Œ๋Š” -1์„ ๋‹ด์Šต๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

  • 4 โ‰ค numbers์˜ ๊ธธ์ด โ‰ค 1,000,000
  • 1 โ‰ค numbers[i] โ‰ค 1,000,000

ํ’€์ด

์ฒ˜์Œ ํ’€์—ˆ๋˜ ๋ฐฉ์‹
์™„์ „ ํƒ์ƒ‰ ๋ฐฉ์‹
๋ฌธ์ œ์ : ์ตœ์•…์˜ ๊ฒฝ์šฐ O(N^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋‚˜์™€ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐœ์ƒ

#include <vector>

using namespace std;

vector<int> solution(vector<int> numbers) {
    vector<int> answer;
    answer.reserve(numbers.size());
    // ์ž๊ธฐ ์ธ๋ฑ์Šค ๋’ค๋ถ€ํ„ฐ ์ž์‹ ๋ณด๋‹ค ํฌ๊ณ  ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด ์žˆ๋Š” ์ˆ˜
    for(int i=0; i<numbers.size()-1; i++)
    {
        int temp = -1;
        for(int j=i+1; j<numbers.size(); j++)
            {
                if(numbers[j]>numbers[i])
                {
                    temp = numbers[j];
                    break;
                }
            } 
        answer.push_back(temp);  
    }
    answer.push_back(-1);
    return answer;
} 

์ตœ์ ํ™”ํ•œ ํ’€์ด
ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ์ž์‹ ๋ณด๋‹ค ํฐ ์ˆ˜๊ฐ€ ์—†์œผ๋ฉด -1์ด๋ฏ€๋กœ -1๋กœ answer๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์Šคํƒ์„ ์ด์šฉํ•ด ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•˜์—ฌ ๋น„๊ตํ–ˆ๋‹ค.

#include <vector>
#include <stack>

using namespace std;

vector<int> solution(vector<int> numbers) {
    vector<int> answer(numbers.size(), -1);
    stack<int> idx;
    // ์ž๊ธฐ ์ธ๋ฑ์Šค ๋’ค๋ถ€ํ„ฐ ์ž์‹ ๋ณด๋‹ค ํฌ๊ณ  ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด ์žˆ๋Š” ์ˆ˜
    for(int i=0; i<numbers.size(); i++)
    {
        while(!idx.empty() && numbers[i]>numbers[idx.top()])
        {
            answer[idx.top()] = numbers[i];
            idx.pop();
        }
        idx.push(i); 
    }
    return answer;
}

ํŒ€ํ”Œ - AI ๊ณต๊ฒฉ ๋ชจ์…˜ ๋ฐœ๋™

GAS๋กœ ํ‹€์ด ๋‹ค ์งœ์—ฌ์žˆ์–ด์„œ Gameplay Tag๋กœ ์‹ ํ˜ธ ์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

  1. Behavior Tree์—์„œ ๊ณต๊ฒฉ ์–ด๋นŒ๋ฆฌํ‹ฐ ๋Œ€์‹  ๊ณต๊ฒฉ ํƒœ๊ทธ๋ฅผ ๋ถ™์ธ๋‹ค.
  2. ABP์—์„œ ๊ทธ ํƒœ๊ทธ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด Attack State๋กœ ์ „ํ™˜
  3. ์ด๋•Œ ์‹คํ–‰๋˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์— Notify๋ฅผ ์ถ”๊ฐ€
  4. ABP์—์„œ ํ•ด๋‹น Notify ์ด๋ฒคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Send Gameplay Event To Actor๋กœ ๊ณต๊ฒฉ ์–ด๋นŒ๋ฆฌํ‹ฐ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋ฐœ๋™ํ•œ๋‹ค.

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

GAS๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๋•Œ๊นŒ์ง€ ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค. ์ฝ”๋“œ์นดํƒ€๋„ ๋งค์ผ ํ•ด์•ผํ•˜๋Š”๋ฐ ์‰ฝ์ง€ ์•Š๋‹ค.


์ถœ์ฒ˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์Šค์ฟจ: ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ 

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