
https://school.programmers.co.kr/learn/courses/30/lessons/133502
ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ์์ ์ผ์ ํ๋ ์์๋ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํ๋ ์ผ์ ํฉ๋๋ค. ํจ๊ป ์ผ์ ํ๋ ๋ค๋ฅธ ์ง์๋ค์ด ํ๋ฒ๊ฑฐ์ ๋ค์ด๊ฐ ์ฌ๋ฃ๋ฅผ ์กฐ๋ฆฌํด ์ฃผ๋ฉด ์กฐ๋ฆฌ๋ ์์๋๋ก ์์์ ์์ ์๋์๋ถํฐ ์๋ก ์์ด๊ฒ ๋๊ณ , ์์๋ ์์์ ๋ง๊ฒ ์์ฌ์ ์์ฑ๋ ํ๋ฒ๊ฑฐ๋ฅผ ๋ฐ๋ก ์ฎ๊ฒจ ํฌ์ฅ์ ํ๊ฒ ๋ฉ๋๋ค. ์์๊ฐ ์ผํ๋ ๊ฐ๊ฒ๋ ์ ํด์ง ์์(์๋์๋ถํฐ, ๋นต โ ์ผ์ฑ โ ๊ณ ๊ธฐ - ๋นต)๋ก ์์ธ ํ๋ฒ๊ฑฐ๋ง ํฌ์ฅ์ ํฉ๋๋ค. ์์๋ ์์ด ๊ต์ฅํ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์์๊ฐ ํฌ์ฅํ๋ ๋์ ์ ์ฌ๋ฃ๊ฐ ์ถ๊ฐ์ ์ผ๋ก ๋ค์ด์ค๋ ์ผ์ ์์ผ๋ฉฐ, ์ฌ๋ฃ์ ๋์ด๋ ๋ฌด์ํ์ฌ ์ฌ๋ฃ๊ฐ ๋์ด ์์ฌ์ ์ผ์ด ํ๋ค์ด์ง๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์์์ ์์ ์์ด๋ ์ฌ๋ฃ์ ์์๊ฐ [์ผ์ฑ, ๋นต, ๋นต, ์ผ์ฑ, ๊ณ ๊ธฐ, ๋นต, ์ผ์ฑ, ๊ณ ๊ธฐ, ๋นต]์ผ ๋, ์์๋ ์ฌ์ฏ ๋ฒ์งธ ์ฌ๋ฃ๊ฐ ์์์ ๋, ์ธ ๋ฒ์งธ ์ฌ๋ฃ๋ถํฐ ์ฌ์ฏ ๋ฒ์งธ ์ฌ๋ฃ๋ฅผ ์ด์ฉํ์ฌ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํ๊ณ , ์ํ ๋ฒ์งธ ์ฌ๋ฃ๊ฐ ์์์ ๋, ๋ ๋ฒ์งธ ์ฌ๋ฃ์ ์ผ๊ณฑ ๋ฒ์งธ ์ฌ๋ฃ๋ถํฐ ์ํ ๋ฒ์งธ ์ฌ๋ฃ๋ฅผ ์ด์ฉํ์ฌ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํฉ๋๋ค. ์ฆ, 2๊ฐ์ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํ๊ฒ ๋ฉ๋๋ค.
์์์๊ฒ ์ ํด์ง๋ ์ฌ๋ฃ์ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด ingredient๊ฐ ์ฃผ์ด์ก์ ๋, ์์๊ฐ ํฌ์ฅํ๋ ํ๋ฒ๊ฑฐ์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์์ค.
1 โค ingredient์ ๊ธธ์ด โค 1,000,000
ingredient์ ์์๋ 1, 2, 3 ์ค ํ๋์ ๊ฐ์ด๋ฉฐ, ์์๋๋ก ๋นต, ์ผ์ฑ, ๊ณ ๊ธฐ๋ฅผ ์๋ฏธํฉ๋๋ค.
| ingredient | result |
|---|---|
| [2, 1, 1, 2, 3, 1, 2, 3, 1] | 2 |
| [1, 3, 2, 1, 2, 1, 3, 1, 2] | 0 |
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฒ์์๋ 2์ค ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ ค๊ณ ํ์ผ๋, ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ ์ํด ๊ณ ๋ฏผํด๋ณธ ๊ฒฐ๊ณผ ์คํ์ ํ์ฉํ ๋ฐฉ๋ฒ์ ๋ ์ฌ๋๋ค.
function solution(ingredient) {
var answer = 0;
// ํ๋ฒ๊ฑฐ
const hamburger = "1231";
// ์คํ
const arr = [];
for (let i = 0; i < ingredient.length; i++) {
arr.push(ingredient[i]);
// ์คํ์ ๊ธธ์ด๊ฐ 4๊ฐ ๋์ด๊ฐ๋ฉด
if (arr.length >= 4) {
// ํ๋ฒ๊ฑฐ์ธ๊ฐ??? : arr ๋ฐฐ์ด ๋ค์์ 4๊ฐ๋ฅผ ํฉ์ณ ํ๋ฒ๊ฑฐ์ ๊ฐ์์ง
const isHamburger = arr.slice(-4).join("") === hamburger;
// ํ๋ฒ๊ฑฐ์ด๋ฉด ๋ค์์ arr ๋ฐฐ์ด ๋ค์์ 4๊ฐ ์๋ฅด๊ณ answer + 1
if (isHamburger) {
arr.splice(-4, 4);
answer++;
}
}
}
return answer;
}
์๋ ์ ํ์ด๋ดค๋ ๋ฌธ์ ์๋๋ฐ ์ค๋๋ง์ ํธ๋๊น ์ด๋ ค์ ๋ค. ์ญ์ ๋ญ๋ ๊พธ์คํ ํด์ผ ํ๋ค. ๋ด์ผ๋ถํฐ๋ ๊ทธ๋ฆผ์ ๊ทธ๋ ค๊ฐ๋ฉด์ ํ์ด์ผ๊ฒ ๋ค.
ํ๋ฒ๊ฑฐ๋ ๋น ๋งฅ์ด์ง!