๐ ๋ฌธ์
๊ณผ์๋ฅผ ๋ฐ๊ตฌ๋ ๋จ์๋ก ํ๋ ๊ฐ๊ฒ๊ฐ ์์ต๋๋ค. ์ด ๊ฐ๊ฒ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง ์ฐจ๋ก๋ก ๋ฒํธ๊ฐ ๋ถ์ ๋ฐ๊ตฌ๋ N๊ฐ๊ฐ ์ผ๋ ฌ๋ก ๋์ดํด ๋จ์ต๋๋ค.
์ฒ ์๋ ๋ ์๋ค์๊ฒ ์ค ๊ณผ์๋ฅผ ์ฌ๋ คํฉ๋๋ค. ์ฒซ์งธ ์๋ค์๊ฒ๋ l๋ฒ ๋ฐ๊ตฌ๋๋ถํฐ m๋ฒ ๋ฐ๊ตฌ๋๊น์ง, ๋์งธ ์๋ค์๊ฒ๋ m+1๋ฒ ๋ฐ๊ตฌ๋๋ถํฐ r๋ฒ ๋ฐ๊ตฌ๋๊น์ง๋ฅผ ์ฃผ๋ คํฉ๋๋ค. ๋จ, ๋ ์๋ค์ด ๋ฐ์ ๊ณผ์ ์๋ ๊ฐ์์ผ ํฉ๋๋ค(1 <= l <= m, m+1 <= r <= N). ์ฆ, A[i] ๋ฅผ i๋ฒ ๋ฐ๊ตฌ๋์ ๋ค์ด์๋ ๊ณผ์ ์๋ผ๊ณ ํ์ ๋, A[l]+..+A[m] = A[m+1]+..+A[r] ๋ฅผ ๋ง์กฑํด์ผ ํฉ๋๋ค.
๊ฐ ๋ฐ๊ตฌ๋ ์์ ๋ค์ ๊ณผ์ ์๊ฐ ์ฐจ๋ก๋ก ๋ค์ ๋ฐฐ์ด cookie๊ฐ ์ฃผ์ด์ง ๋, ์กฐ๊ฑด์ ๋ง๊ฒ ๊ณผ์๋ฅผ ์ด ๊ฒฝ์ฐ ํ ๋ช
์ ์๋ค์๊ฒ ์ค ์ ์๋ ๊ฐ์ฅ ๋ง์ ๊ณผ์ ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. (๋จ, ์กฐ๊ฑด์ ๋ง๊ฒ ๊ณผ์๋ฅผ ๊ตฌ๋งคํ ์ ์๋ค๋ฉด 0์ return ํฉ๋๋ค)
์ ํ์ฌํญ
- cookie์ ๊ธธ์ด๋ 1 ์ด์ 2,000 ์ดํ์ ๋๋ค.
- cookie์ ๊ฐ๊ฐ์ ์์๋ 1 ์ด์ 500 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
| [1,1,2,3] | 3 |
| [1,2,4,5] | 0 |
โ๏ธ ํ์ด
๋ฒ์๋ฅผ ๊ตฌํด ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ์ฐํ๊ธฐ์๋ ๋ฌด์กฐ๊ฑด ์๊ฐ์ด๊ณผ๊ฐ ์ผ์ด๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ณด์๋ค. ๊ธฐ์ค์ด ๋๋ ์๋ฅผ ์ก๊ณ ์ข์ฐ๋ก ๋ํด๋๊ฐ๋ฉฐ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ๋ ๋๋ฅผ ์ฐพ์๋ค.
๊ธฐ๋ณธ์ ์ธ ์์ด๋์ด๋ ๋ค์๊ณผ ๊ฐ๋ค. [1, 1, 2, 3, 1, 1]์ ๊ฒฝ์ฐ๋ฅผ ์์๋ก ์ก์๋ค.
left์ right๋ผ๋ ๋ณ์๊ฐ ์๋ค. ์ถ๊ฐ๋ก ์ข์ฐ ๋์ ํฉ์ ๊ฐ์ง๋ leftSum, rightSum์ด๋ผ๋ ๋ณ์๋ ์ ์ธํ๋ค.

๊ธฐ์ค์ด ๋๋ ์๋ 0 ์ธ๋ฑ์ค๋ถํฐ ์์ํ๋ค. ๋ฐ๋ผ์ left = 0, right = 1์ด ๋๋ค. ์ด๋ฐ์์ผ๋ก ์ด๊ธฐ๊ฐ์ด left = 1, right = 2 / left = 2, right = 3 / left = 3, right = 4 ... ๋ก ์งํํด ๋๊ฐ๋ค.

๋ง์ฝ ํ์ฌ ์ด๊ธฐ๊ฐ์ด left = 2, right = 3 ์ผ ๋, leftSum, rightSum์ ๊ฐ๊ฐ 2, 3์ด๋ค. ์ด๋ ์ด ๋์ ๋น๊ตํด์ ์ ์ ๋ถ๋ถ์ ํ์ฅ์ํจ๋ค. ํ์ฌ ์์์ ๊ฒฝ์ฐ 2, 3์ผ๋ก ์ผ์ชฝ ๋ถ๋ถ์ด ์๊ธฐ ๋๋ฌธ์ left ์ธ๋ฑ์ค๋ฅผ -1 ์์ผ์ค๋ค. ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ ๋๋ ์ฆ๊ฐ์ํฌ ๋ ๋ฐฐ์ด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค ๋ฒ์๋ฅผ ํ์ธํด์ผ ํ๋ค.

์ด์ ํ์ฌ ์ธ๋ฑ์ค๋ left = 1, right = 3๊ฐ ๋๊ณ leftSum = 2 + 1, rightSum = 3์ผ๋ก ๊ฐ์ด ๊ฐ๋ค. ๋ฐ๋ผ์ ์๋ค์๊ฒ 3๊ฐ์ฉ ๋๋ ์ค ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ํ์ธํ๋ค. ํ์ง๋ง ์ธ๋ฑ์ค์ ์ฆ๊ฐ์ ๋ฐ๋ผ ๋ ํฐ ๊ฐ์ ์ฐพ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ์งํํ๋ค. ์ด๋ ์ข์ฐ ํ์ชฝ์ ์ธ๋ฑ์ค๋ฅผ ์ฆ๊ฐ์ํค๋๋ฐ ๋๋ left์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์์์ผฐ๋ค.

ํ์ฌ ์ธ๋ฑ์ค๋ left = 0, right = 3๊ฐ ๋๊ณ leftSum = 2 + 1 + 1, rightSum = 3๋ก ์ค๋ฅธ์ชฝ์ด ๋ ์๋ค. ๋ฐ๋ผ์ ์ค๋ฅธ์ชฝ right์ ์ธ๋ฑ์ค๋ฅผ +1ํด์ค๋ค.

ํ์ฌ ์ธ๋ฑ์ค๋ left = 0, right = 4๊ฐ ๋๊ณ leftSum = 2 + 1 + 1, rightSum = 3 + 1๋ก ์๋ก์ด ๋ ํฐ ๊ฐ์ ์ฐพ์๋ค. ๋ฐ๋ผ์ answer๋ฅผ ๊ฐฑ์ ํด์ฃผ๊ณ ์ผ์ชฝ ์ธ๋ฑ์ค๋ฅผ ํ๋ ๊ฐ์์ํจ๋ค. ํ์ง๋ง ๊ทธ๋ด ๊ฒฝ์ฐ -1๋ก ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๋ฒ์ด๋๊ธฐ ๋๋ฌธ์ break๋ฅผ ํด์ฃผ๊ณ ๋ค์์ ๊ฒฝ์ฐ๋ฅผ ํ์ํ๋ค.
์์ ๊ฐ์ ์์ผ๋ก ๋ชจ๋ ๊ฐ์ ์ฐพ๊ณ ์ฐพ์ ๋๋ง๋ค answer์ ๋น๊ตํ์ฌ ์ต๋๊ฐ์ ๊ฐฑ์ ์ํค๋ฉด ์๋ค์๊ฒ ์ค ์ ์๋ ์ต๋ ์ฟ ํค ๊ฐ์๋ฅผ ์ฐพ์ ์ ์๋ค.
โจ๏ธ ์ฝ๋
function solution(cookie) {
var answer = 0;
const cookieLen = cookie.length;
for (let i = 0; i < cookieLen - 1; i++) {
let left = i;
let right = i + 1;
let leftSum = cookie[left];
let rightSum = cookie[right];
while (true) {
if (leftSum === rightSum) answer = Math.max(answer, leftSum);
if (leftSum <= rightSum) {
left--;
if (left < 0) break;
leftSum += cookie[left];
} else {
right++;
if (right >= cookieLen) break;
rightSum += cookie[right];
}
}
}
return answer;
}'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Algorithm] ๋ฆฌ๋ชจ์ปจ (๋ฐฑ์ค - 1107) (0) | 2023.05.01 |
|---|---|
| [Algorithm] ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์(๋ฐฑ์ค - 16928) (0) | 2023.04.30 |
| [Algorithm] ๋ช ์์ ์ ๋น(1) (0) | 2023.04.27 |
| [Algorithm] ์นด์ดํธ๋ค์ด (0) | 2023.04.26 |
| [Algorithm] ์ถ์ต ์ ์ (0) | 2023.04.24 |