๐ ํ์ด์ฌ ์ผ๋ก ํ์ด
๐ ๋ฌธ์ ๋งํฌ :
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ๋ฌธ์ ์ค๋ช :
ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ์์ ์ผ์ ํ๋ ์์๋ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํ๋ ์ผ์ ํฉ๋๋ค. ํจ๊ป ์ผ์ ํ๋ ๋ค๋ฅธ ์ง์๋ค์ด ํ๋ฒ๊ฑฐ์ ๋ค์ด๊ฐ ์ฌ๋ฃ๋ฅผ ์กฐ๋ฆฌํด ์ฃผ๋ฉด ์กฐ๋ฆฌ๋ ์์๋๋ก ์์์ ์์ ์๋์๋ถํฐ ์๋ก ์์ด๊ฒ ๋๊ณ , ์์๋ ์์์ ๋ง๊ฒ ์์ฌ์ ์์ฑ๋ ํ๋ฒ๊ฑฐ๋ฅผ ๋ฐ๋ก ์ฎ๊ฒจ ํฌ์ฅ์ ํ๊ฒ ๋ฉ๋๋ค. ์์๊ฐ ์ผํ๋ ๊ฐ๊ฒ๋ ์ ํด์ง ์์(์๋์๋ถํฐ, ๋นต – ์ผ์ฑ – ๊ณ ๊ธฐ - ๋นต)๋ก ์์ธ ํ๋ฒ๊ฑฐ๋ง ํฌ์ฅ์ ํฉ๋๋ค. ์์๋ ์์ด ๊ต์ฅํ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์์๊ฐ ํฌ์ฅํ๋ ๋์ ์ ์ฌ๋ฃ๊ฐ ์ถ๊ฐ์ ์ผ๋ก ๋ค์ด์ค๋ ์ผ์ ์์ผ๋ฉฐ, ์ฌ๋ฃ์ ๋์ด๋ ๋ฌด์ํ์ฌ ์ฌ๋ฃ๊ฐ ๋์ด ์์ฌ์ ์ผ์ด ํ๋ค์ด์ง๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์์์ ์์ ์์ด๋ ์ฌ๋ฃ์ ์์๊ฐ [์ผ์ฑ, ๋นต, ๋นต, ์ผ์ฑ, ๊ณ ๊ธฐ, ๋นต, ์ผ์ฑ, ๊ณ ๊ธฐ, ๋นต]์ผ ๋, ์์๋ ์ฌ์ฏ ๋ฒ์งธ ์ฌ๋ฃ๊ฐ ์์์ ๋, ์ธ ๋ฒ์งธ ์ฌ๋ฃ๋ถํฐ ์ฌ์ฏ ๋ฒ์งธ ์ฌ๋ฃ๋ฅผ ์ด์ฉํ์ฌ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํ๊ณ , ์ํ ๋ฒ์งธ ์ฌ๋ฃ๊ฐ ์์์ ๋, ๋ ๋ฒ์งธ ์ฌ๋ฃ์ ์ผ๊ณฑ ๋ฒ์งธ ์ฌ๋ฃ๋ถํฐ ์ํ ๋ฒ์งธ ์ฌ๋ฃ๋ฅผ ์ด์ฉํ์ฌ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํฉ๋๋ค. ์ฆ, 2๊ฐ์ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํ๊ฒ ๋ฉ๋๋ค.
์์์๊ฒ ์ ํด์ง๋ ์ฌ๋ฃ์ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด ingredient๊ฐ ์ฃผ์ด์ก์ ๋, ์์๊ฐ ํฌ์ฅํ๋ ํ๋ฒ๊ฑฐ์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์์ค.
๐ ์ ํ ์ฌํญ
- 1 ≤ ingredient์ ๊ธธ์ด ≤ 1,000,000
- ingredient์ ์์๋ 1, 2, 3 ์ค ํ๋์ ๊ฐ์ด๋ฉฐ, ์์๋๋ก ๋นต, ์ผ์ฑ, ๊ณ ๊ธฐ๋ฅผ ์๋ฏธํฉ๋๋ค.
๐ ์ ์ถ๋ ฅ ์

์ถ์ธก)
* ์์๊ฐ [๋นต(1), ์ผ์ฑ(2), ๊ณ ๊ธฐ(3), ๋นต(1)] ์ธ๋ฐ, ์ฌ๋ฃ๊ฐ ์์ ์์ ๋ณด๋ค๋ ์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ๊ฐ ์ฐ์ ์ ์ผ๋ก ํฌ์ฅ๋จ.
- ์ด์ฐจํผ ๋ฐํ๋๋ ๊ฐ์ ๊ฐ์๋ผ ์ฐ์์ ์ธ ๊ฑธ ์ฐ์ ์ ์ํด๋ ์๊ด์์ง ์์ ๊น ์ถ์ง๋ง, ์์๋ก ์ฐ์์ ์ธ ๊ฑธ ์ฐ์ ์ ํ ์ด์ ๊ฐ ์์ ๊ฑฐ ๊ฐ๋ค.
* 2์ฐจ์ ๋ฐฐ์ด๋ก?
* [2, 1, 1, 2, 3, 1, 2, 3, 1] ๊ฒฝ์ฐ
- Queue๋ก ํด์ ์๋ถํฐ ๋นผ์ ์ ๋ ฌ (X - ์ฐ์๋๋ ๊ฑธ ์ฐ์ ์ ํ ์ ์์
- [1,2,3,1] ๋ฐฐ์ด ์ผ์นํ๋ ์ง ํ์ธํด์ cnt ์ฌ๋ฆฌ๊ธฐ
ex) [[1, 2, 3, 1],[1, 2, 3, 1],[2, 0, 0, 0]]
์์ค์ฝ๋)
* 1์ฐจ) ์คํจ : 44.4์ ์๊ฐ์ด๊ณผ
def solution(ingredient):
burger = [1, 2, 3, 1]
flag = 1
i = 0
cnt = 0
while flag == 1:
if ingredient[i: i + 4] == burger:
del ingredient[i: i + 4]
cnt += 1
i = 0
else:
i += 1
if len(ingredient) < len(burger):
flag = 0
if i > (len(ingredient)-3) and cnt == 0 :
flag = 0
return cnt
* 2์ฐจ) ์คํ์ผ๋ก ํ๊ธฐ : 88.8์ ์๊ฐ์ด๊ณผ 2๊ฐ
def solution(ingredient):
burger = [1, 2, 3, 1]
cnt = 0
stack = []
for one in ingredient :
stack.append(one)
length = len(stack)
if length >= 4 :
if stack[length-4: length] == burger :
stack = stack[:length-4]
cnt += 1
return cnt
* 3์ฐจ) ์คํ pop์ผ๋ก ๋ง์ง๋ง 4๊ฐ ๋นผ๋๊น ์๊ฐ์ด๊ณผ ์ฌ๋ผ์ง
def hamburger(ingredient):
burger = [1, 2, 3, 1]
cnt = 0
stack = []
for one in ingredient :
stack.append(one)
length = len(stack)
if length >= 4 :
if stack[length-4: length] == burger :
stack.pop()
stack.pop()
stack.pop()
stack.pop()
cnt += 1
print(cnt)
๋ฆฌ๋ทฐ)
์ฌ๋ฌ๋ชจ๋ก ์๋ฃ๊ตฌ์กฐ์ ์ ์์์ผ ํ ์ ์์๋ ๋ฌธ์ ์๋ค. ์คํ์ ์ธ์ ์จ์ผํ ์ง ๋ฐ๋ก ์ ์ ์๊ฒ ๋ฌธ์ ๋ฅผ ๋ง์ด ํ์ด๋ด์ผ๊ฒ ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง! ์๋.. ์ฌ๋ผ์ด์ฑ๋ณด๋ค pop์ด ํจ์ฌ ๋น ๋ฅด๊ตฌ๋.... ๊ทธ๋ ๊ตฌ๋... ๋ง์ ๊ฒ์ ๋ฐฐ์ด ๋ฌธ์
'Coding Test > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Programmers] ์ฝ๋ผ ๋ฌธ์ (0) | 2023.02.13 |
|---|---|
| Programmers] ์น์์ด (2) (0) | 2023.02.13 |
| Programmers] ํธ๋ ํ์ดํธ ๋ํ (0) | 2023.02.13 |
| Programmers] ๊ณผ์ผ ์ฅ์ (1) | 2023.02.13 |
| Programmers] ๊ธฐ์ฌ๋จ์์ ๋ฌด๊ธฐ (0) | 2023.02.04 |
