[Algorithm] ํน์ ์ ๊น์ง์ ํฉ ๊ตฌํ๊ธฐ / ๋ฑ์ฐจ์์ด (๊ฐ์ฐ์ค ๊ณต์)
ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค์ "๋ถ์กฑํ ๊ธ์ก ๊ณ์ฐํ๊ธฐ" ๋ฌธ์ ๋ค. ์๋ 3๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ๋๋ค.
price
: ๋์ด๊ธฐ๊ตฌ์ ์ด์ฉ๋ฃmoney
: ๊ณ ๊ฐ์ด ๊ฐ์ง๊ณ ์๋ ๊ธ์กcount
: ๊ณ ๊ฐ์ด ํด๋น ๋์ด๊ธฐ๊ตฌ๋ฅผ ์ด์ฉํ ํ์
๋์ด๊ธฐ๊ตฌ๋ฅผ ์ด์ฉํ ํ์๊ฐ ๋์ด๋ ๋๋ง๋ค ํ์ ๋งํผ์ ์ด์ฉ๋ฃ๋ฅผ ๋ ๋ฐ๋๋ค. ๋์ด๊ธฐ๊ตฌ์ ์ด์ฉ๋ฃ price
๊ฐ 100์์ด๋ผ๋ฉด 1๋ฒ ์ด์ฉํ ๋ 100์, 2๋ฒ ์ด์ฉํ ๋ 200์, 3๋ฒ ์ด์ฉํ ๋ 300์์ด ๋๋ค. ๋์ด๊ธฐ๊ตฌ๋ฅผ count
๋ฒ ํ์ ๋ money
๊ธ์ก์์ ์ผ๋ง๋ ๋ชจ์๋ผ๋์ง๋ฅผ ๋ฐํํด์ผ ๋๋ค. ๊ธ์ก์ด ๋ชจ์๋ผ์ง ์์ผ๋ฉด 0์ ๋ฐํํ๋ค.
๋ฐ๋ณต๋ฌธ์ ์ด์ฉํ๋ฉด ์๋์ฒ๋ผ ์ฝ๊ฒ ํ ์ ์๋ค.
function solution(price, money, count) {
let sum = 0;
for (let i = 1; i <= count; i += 1) {
sum += price * i; // 3 + 6 + 9 + 12 = 30
}
return sum <= money ? 0 : sum - money; // 30 - 20 = 10
}
solution(3, 20, 4); // 10
์๋๋ ๊ฐ์ฐ์ค ๊ณต์์ ์ด์ฉํด์ ํด๊ฒฐํ ์ฝ๋๋ก ์ข์์๋ฅผ ๊ฐ์ฅ ๋ง์ด ๋ฐ์๋ค.
function solution(price, money, count) {
const tmp = (price * count * (count + 1)) / 2 - money;
return tmp > 0 ? tmp : 0;
}
๋ฑ์ฐจ์์ด (๊ฐ์ฐ์ค ๊ณต์)
1๋ถํฐ 100๊น์ง ์๋ฅผ ๋ชจ๋ ๋ํ ๋ $1 + 100 = 101$, $2 + 99 = 101$, $3 + 98 = 101$.. ๋ชจ๋ 101์ด ๋์จ๋ค. $50 + 51 = 101$ ๊น์ง ๊ณ์ ๋ฐ๋ณตํด์ 101์ 50๋ฒ ๋ํ๋ฉด 1~100๊น์ง ์์ ํฉ์ด ๋๋ค.
๋ฐ๋ผ์ 1~100๊น์ง ์์ ํฉ์ $101 * 50 = 5050$์ด ๋๋ค. 1์ฉ ์ฆ๊ฐํ๋ ์์ด์ ์๋์ฒ๋ผ ๊ณต์ํํ ์ ์๋ค.
n = ๋ง์ง๋ง ์(1๋ถํฐ 1์ฉ ์ฆ๊ฐํ๋ ์์ด์์ ๊ฐ์ฅ ๋ง์ง๋ง ์๊ฐ ํญ์ ๊ฐ์)
101(n + 1)์ 50(n / 2)๋ก ๊ณฑํ๋ฉด 1~100๊น์ง์ ๋ชจ๋ ํฉ์ด ๋๋ค. ํน์...
101(n + 1)์ 100(n)์ผ๋ก ๊ณฑํ ๋ค 2๋ก ๋๋๋ฉด 1~100๊น์ง์ ๋ชจ๋ ํฉ์ด ๋๋ค.
**(n + 1) * n / 2**
๋ง์ง๋ง ์(ํญ์ ๊ฐ์)์์ 2๋ฅผ ๋๋๋ ์ด์ ๋? ํญ ๊ฐ์ ์ ๋ฐ ์ง์ ์ ๋์๋๋ถํฐ ์ด๋ฏธ ๋ํ๋ ์๋ฅผ ์ค๋ณตํด์ ๋ํ๊ธฐ ๋๋ฌธ์ด๋ค.
47 + 54
48 + 53
49 + 52
50 + 51
------- ์ค๊ฐ ์ง์
51 + 50
52 + 49
53 + 48
54 + 47
...
ํญ์ ๊ฐ์ ๊ตฌํ๊ธฐ
1๋ถํฐ 1์ฉ ์ฆ๊ฐํ๋ ์์ด์์ ํญ์ ๋ง์ง๋ง ์๊ฐ ํญ์ ๊ฐ์๊ฐ ๋๋ค.
1๋ถํฐ 100๊น์ง๋ ๊ฐ ํญ์ด 1์ฉ ์ฆ๊ฐํ๋ฏ๋ก ์ด ํญ์ ๊ฐ์๋ 100์ด๋ผ๋๊ฑธ ๋ฐ๋ก ์ ์ ์๋ค. ํ์ง๋ง 1, 3, 5, 7, 9 ์ด๋ ๊ฒ 2์ฉ ์ฆ๊ฐํ๋ ์์ด์ ๋จผ์ ๋ช๊ฐ์ ํญ์ด ์๋์ง๋ถํฐ ๊ณ์ฐํด์ผ ํ๋ค. ์๋ ๊ณต์์ผ๋ก ์ฝ๊ฒ ๊ตฌํ ์ ์๋ค.
((๋ง์ง๋ง ์ - ์ฒซ๋ฒ์งธ ์) / ์์ด์ ์ฆ๊ฐํญ) + 1
3, 5, 7, ...401 ์์ด์ด ์๋ค๊ณ ๊ฐ์ ํ๋ฉด...
- ์ฒซ๋ฒ์งธ ํญ(3)๋ถํฐ ๋ง์ง๋ง ํญ(401)๊น์ง $401 - 3 = 398$ ๋งํผ ์ฆ๊ฐํ๋ค.
- ์์ด์ด 2์ฉ ์ฆ๊ฐํ๋ฏ๋ก ์ฒซ๋ฒ์งธ ํญ๋ถํฐ ๋ง์ง๋ง ํญ์ ๋๋ฌํ๊ธฐ ๊น์ง $398 / 2 = 199$ ๊ฐ์ ํญ์ด ์๋ค.
- ์ฒซ๋ฒ์งธ ํญ๋ ํฌํจํด์ผ ํ๋ฏ๋ก $199 + 1 = 200$ ๊ฐ์ ํญ์ด ์๋ค.
์ ๊ณต์๋๋ก ๋ค๋ฅธ ์์ด์ ํญ ๊ฐ์๋ ๊ตฌํด๋ณด๋ฉด...
- 1~100๊น์ง 1์ฉ ์ฆ๊ฐํ๋ ์์ด์ $((100 - 1) / 1) + 1 = 100$ ๊ฐ์ ํญ์ด ์๋ค
- 1, 3, 5, 7, 9๊น์ง 2์ฉ ์ฆ๊ฐํ๋ ์์ด์ $((9 - 1)/2) + 1 = 5$ ๊ฐ์ ํญ์ด ์๋ค
์์ด์ ๋ชจ๋ ํฉ ๊ตฌํ๊ธฐ
๋ชจ๋ ํญ์ ๊ฐ์๋ฅผ ๊ตฌํ์ผ๋ ๊ฐ์ฐ์ค๊ฐ ์ด๋ฑํ๊ต๋ ํ์๋ ๋ฐฉ์์ ๊ทธ๋๋ก ์ ์ฉํ๋ฉด ๋๋ค.
(์ฒซ๋ฒ์งธ ์ + ๋ง์ง๋ง ์) * (ํญ์ ๊ฐ์ / 2)
3, 5, 7, ...401 ๊น์ง์ ํฉ์ ๊ตฌํ๋ค๊ณ ๊ฐ์ ํ๋ฉด...
- ํญ์ ๊ฐ์ : $(401 - 3) / 2 + 1 = 200$
- ์์ด์ ํฉ : $(3 + 401) * 200 / 2 = 40400$
๋ฌธ์ ์ ๋ฑ์ฐจ์์ด ๊ณต์ ์ ์ฉํ๊ธฐ
๋ค์ ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ๋ก ๋์์์ count
๋ง ๋ฐ๋ก ๋ถ๋ฆฌํด์ ์๊ฐํด๋ณธ๋ค. count
ํ๋ผ๋ฏธํฐ๋ฅผ 4๋ก ๋ฐ์๋ค๋ฉด 1, 2, 3, 4 ์ด๋ ๊ฒ 1์ฉ ์ฆ๊ฐํ๋ ์์ด์ด ๋๋ค. ์์์ ๊ณต๋ถํ๋ ๋ฑ์ฐจ์์ด ๊ณต์์ ์ ์ฉํด์ count
์ซ์๋งํผ์ ์ด ํฉ์ ๊ตฌํด๋ณด๋ฉด $(4+1) * (4 / 2) = 10$์ด ๋๋ค.
์ฒซ๋ฒ์งธ ์๋ ํญ์ 1์ด๊ธฐ ๋๋ฌธ์ 4(count) + 1์ ํ๋ค. count
๋ 1์ฉ ์ฆ๊ฐํ๋ฏ๋ก ํญ์ ๊ฐ์๋ ํญ์ count
์์ ๊ฐ์์ 4/2๋ฅผ ํ๋ค. ์ฝ๋๋ก ํ์ด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
(count + 1) * (count / 2);
์ฌ๊ธฐ์ price
๊ฐ์ ๊ณฑํด์ฃผ๋ฉด ์ฆ๊ฐํ count
๊น์ง count * price
๊ฐ์ ๋ชจ๋ ๋ํ ๊ธ์ก์ด ๋๋ค.
(count + 1) * (count / 2) * price;
๊ณ ๊ฐ์ด ์๋ ๊ฐ์ง๊ณ ์๋ ๋ money
๋ฅผ ๋นผ์ฃผ๋ฉด count
๋ฒ ๋งํผ ๋์ด๊ธฐ๊ตฌ๋ฅผ ์ด์ฉํ ๋์ ์ด๊ณผ๊ธ์ก์ ๊ตฌํ ์ ์๋ค. ๋ฌธ์ ๊ฐ ์ํ๋ ๋ต์ด๋ค.
(count + 1) * (count / 2) * price - money;
๋ ์ฝ๊ฒ ์๊ฐํด๋ณด๊ธฐ
์ข ๋ ์ฝ๊ฒ ์๊ฐํด๋ณผ ์๋ ์๋ค. price
๊ฐ 3, count
๊ฐ 4๋ผ๊ณ ๊ฐ์ ํ์ ๋, ์๋์ฒ๋ผ price
์ซ์ ๋งํผ ์ฆ๊ฐํ๋ count
๊ฐ์ ํญ์ ๊ฐ๋ ์์ด์ด ๋๋ค.
3 + 6 + 9 + 12 = 30
(3 + 12) + (6 + 9) = 30
ํญ์ ๊ฐ์๋ ํญ์ count ์ซ์์ ๊ฐ์ผ๋ฏ๋ก ๋ฐ๋ก ๋ชจ๋ ์์ด์ ํฉ์ ๊ตฌํ ์ ์๋ค.
// (์ฒซ๋ฒ์งธ ์ + ๋ง์ง๋ง ์) * (ํญ์ ๊ฐ์ / 2)
(price + price * count) * (count / 2);
๋ ํผ๋ฐ์ค
- ๋ฑ์ฐจ๊ธ์ (๊ฐ๋ ์ดํดํ๊ธฐ) | ๊ธ์ | Khan Academy
- [๊น๋์์ ์ํ ์ด๋๋ฒค์ฒ] ๊ฐ์ฐ์ค๋ ์ด๋ป๊ฒ '1+2+ +99+100'์ ์์๊ฐ์ ๋งํ์๊น
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Git] Github ๋งํฌ๋ค์ด์ ๊ฐ์ฃผ ๋ฌ๊ธฐ (0) | 2024.04.29 |
---|---|
[React] ๋ฆฌ์กํธ ์์ ๋๋๊ทธ์ค๋๋กญ ๊ตฌํ (0) | 2024.04.28 |
[CS] ์ง๋ฒ ๊ณ์ฐ ๋ฐฉ๋ฒ โ 10์ง์ โ 2์ง์ ๋ณํ (0) | 2024.04.28 |
[React] ๋ฆฌ์กํธ ๋ง์ฐ์ค ๋๋๊ทธ ๊ฐ๋ฅํ ์์ ๋ง๋ค๊ธฐ / ๊ธฐํ ํ๋กํผํฐ (0) | 2024.04.27 |
[JS] ์๋ฐ์คํฌ๋ฆฝํธ URL ๊ฐ์ฒด / searchParams (0) | 2024.04.27 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[Git] Github ๋งํฌ๋ค์ด์ ๊ฐ์ฃผ ๋ฌ๊ธฐ
[Git] Github ๋งํฌ๋ค์ด์ ๊ฐ์ฃผ ๋ฌ๊ธฐ
2024.04.29 -
[React] ๋ฆฌ์กํธ ์์ ๋๋๊ทธ์ค๋๋กญ ๊ตฌํ
[React] ๋ฆฌ์กํธ ์์ ๋๋๊ทธ์ค๋๋กญ ๊ตฌํ
2024.04.28 -
[CS] ์ง๋ฒ ๊ณ์ฐ ๋ฐฉ๋ฒ — 10์ง์ โ 2์ง์ ๋ณํ
[CS] ์ง๋ฒ ๊ณ์ฐ ๋ฐฉ๋ฒ — 10์ง์ โ 2์ง์ ๋ณํ
2024.04.28 -
[React] ๋ฆฌ์กํธ ๋ง์ฐ์ค ๋๋๊ทธ ๊ฐ๋ฅํ ์์ ๋ง๋ค๊ธฐ / ๊ธฐํ ํ๋กํผํฐ
[React] ๋ฆฌ์กํธ ๋ง์ฐ์ค ๋๋๊ทธ ๊ฐ๋ฅํ ์์ ๋ง๋ค๊ธฐ / ๊ธฐํ ํ๋กํผํฐ
2024.04.27