๐
2025-09-05
๋ฌธ์ ๋งํฌ
๋ฌธ์ ์ค๋ช
๋ง๋ฒ์ ์ธ๊ณ์ ์ฌ๋ ๋ฏผ์๋ ์์ฃผ ๋์ ํ์ ์ด๊ณ ์์ต๋๋ค. ํ์ด ๋๋ฌด ๋์์ ๊ฑธ์ด ๋ค๋๊ธฐ ํ๋ ๋ฏผ์๋ ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ๋ฅผ ๋ง๋ค์์ต๋๋ค. ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ์ ๋ฒํผ์ ํน๋ณํฉ๋๋ค. ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ์๋ -1, +1, -10, +10, -100, +100 ๋ฑ๊ณผ ๊ฐ์ด ์ ๋๊ฐ์ด 10c (c โฅ 0 ์ธ ์ ์) ํํ์ธ ์ ์๋ค์ด ์ ํ ๋ฒํผ์ด ์์ต๋๋ค. ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ์ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ์ฌ ์ธต ์์ ๋ฒํผ์ ์ ํ ์๋ ๊ฐ์ ๋ํ ์ธต์ผ๋ก ์ด๋ํ๊ฒ ๋ฉ๋๋ค. ๋จ, ์๋ฆฌ๋ฒ ์ดํฐ๊ฐ ์์นํด ์๋ ์ธต๊ณผ ๋ฒํผ์ ๊ฐ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ 0๋ณด๋ค ์์ผ๋ฉด ์๋ฆฌ๋ฒ ์ดํฐ๋ ์์ง์ด์ง ์์ต๋๋ค. ๋ฏผ์์ ์ธ๊ณ์์๋ 0์ธต์ด ๊ฐ์ฅ ์๋์ธต์ด๋ฉฐ ์๋ฆฌ๋ฒ ์ดํฐ๋ ํ์ฌ ๋ฏผ์๊ฐ ์๋ ์ธต์ ์์ต๋๋ค.
๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ๋ฅผ ์์ง์ด๊ธฐ ์ํด์ ๋ฒํผ ํ ๋ฒ๋น ๋ง๋ฒ์ ๋ ํ ๊ฐ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.์๋ฅผ ๋ค์ด, 16์ธต์ ์๋ ๋ฏผ์๊ฐ 0์ธต์ผ๋ก ๊ฐ๋ ค๋ฉด -1์ด ์ ํ ๋ฒํผ์ 6๋ฒ, -10์ด ์ ํ ๋ฒํผ์ 1๋ฒ ๋๋ฌ ๋ง๋ฒ์ ๋ 7๊ฐ๋ฅผ ์๋ชจํ์ฌ 0์ธต์ผ๋ก ๊ฐ ์ ์์ต๋๋ค. ํ์ง๋ง, +1์ด ์ ํ ๋ฒํผ์ 4๋ฒ, -10์ด ์ ํ ๋ฒํผ 2๋ฒ์ ๋๋ฅด๋ฉด ๋ง๋ฒ์ ๋ 6๊ฐ๋ฅผ ์๋ชจํ์ฌ 0์ธต์ผ๋ก ๊ฐ ์ ์์ต๋๋ค.
๋ง๋ฒ์ ๋์ ์๋ผ๊ธฐ ์ํด ๋ฏผ์๋ ํญ์ ์ต์ํ์ ๋ฒํผ์ ๋๋ฌ์ ์ด๋ํ๋ ค๊ณ ํฉ๋๋ค. ๋ฏผ์๊ฐ ์ด๋ค ์ธต์์ ์๋ฆฌ๋ฒ ์ดํฐ๋ฅผ ํ๊ณ 0์ธต์ผ๋ก ๋ด๋ ค๊ฐ๋๋ฐ ํ์ํ ๋ง๋ฒ์ ๋์ ์ต์ ๊ฐ์๋ฅผ ์๊ณ ์ถ์ต๋๋ค. ๋ฏผ์์ ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ๊ฐ ์๋ ์ธต์ ๋ํ๋ด๋ ์ ์ storey ๊ฐ ์ฃผ์ด์ก์ ๋, 0์ธต์ผ๋ก ๊ฐ๊ธฐ ์ํด ํ์ํ ๋ง๋ฒ์ ๋์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ์ฌํญ
#include <vector>
#include <cmath>
using namespace std;
int solution(int storey) {
int answer = 0;
// ๋ฐ์ฌ๋ฆผ ๊ณ ๋ ค
while(storey>0)
{
int remainder = storey%10;
if(remainder>5 || (remainder==5 && storey/10%10+1>5))
remainder = 10-remainder;
else remainder *= -1;
answer+=abs(remainder);
storey+=remainder;
storey/=10;
}
return answer;
}
GAS - EffectGameplayEffect: ๊ฒ์ ๋ด์ ๋ณํ๋ฅผ ๋ด๋นํ๋ ์์คํ
Add -> Multiply -> Override ์์ผ๋ก ์ฐ์ฐ
// ์ฐ์ฐ์ ํ์
Modifier.ModifierOp = EGameplayModOp::Additive;
// ์ฐ์ฐ์ ์ ์ฉ๋ ์์น
Modifier.ModifierMagnitude.SetValue(30.0f); // +30
Cost Effect
Cooldown Effect
CanActivateAbility()
Commit()
๐ ์ฆ, CanActivateAbility๋ ์ฌ์ ํํฐ, Commit์ ์ต์ข ํ์ ๋ฐ ์ค์ ์ ์ฉ
์ํ์๋ฉด ์ ๊ฐ ์ด Cost / Cooldown ๋ถ๋ถ์ TIL์ ๋ง๊ฒ ๊ทธ๋ฆผ(์คํ ํ๋ฆ ๋ค์ด์ด๊ทธ๋จ)์ผ๋ก๋ ์ ๋ฆฌํด๋๋ฆด๊น์?
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค - ๋ง๋ฒ ์๋ฆฌ๋ฒ ์ดํฐ
์ถ์ฒ: ์คํ๋ฅดํ์ฝ๋ฉ ๋ด์ผ๋ฐฐ์์บ ํ