๋ฌธ์ ์ค๋ช
์์ฌ๋ ํ๋ฐฐ์์๋ฅผ ํธ๋ญ์ ์ฃ๋ ์ผ์ ํฉ๋๋ค. ์์ฌ๊ฐ ์ค์ด์ผ ํ๋ ํ๋ฐฐ์์๋ ํฌ๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ์ผ๋ฉฐ 1๋ฒ ์์๋ถํฐ n๋ฒ ์์๊น์ง ๋ฒํธ๊ฐ ์ฆ๊ฐํ๋ ์์๋๋ก ์ปจํ ์ด๋ ๋ฒจํธ์ ์ผ๋ ฌ๋ก ๋์ฌ ์์ฌ์๊ฒ ์ ๋ฌ๋ฉ๋๋ค. ์ปจํ ์ด๋ ๋ฒจํธ๋ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์งํ์ด ๊ฐ๋ฅํด์ ๋ฒจํธ์ ๋์ธ ์์๋๋ก(1๋ฒ ์์๋ถํฐ) ์์๋ฅผ ๋ด๋ฆด ์ ์์ต๋๋ค. ํ์ง๋ง ์ปจํ ์ด๋ ๋ฒจํธ์ ๋์ธ ์์๋๋ก ํ๋ฐฐ์์๋ฅผ ๋ด๋ ค ๋ฐ๋ก ํธ๋ญ์ ์ฃ๊ฒ ๋๋ฉด ํ๋ฐฐ ๊ธฐ์ฌ๋์ด ๋ฐฐ๋ฌํ๋ ์์์ ํ๋ฐฐ์์๊ฐ ์ค๋ ค ์๋ ์์๊ฐ ๋ง์ง ์์ ๋ฐฐ๋ฌ์ ์ฐจ์ง์ด ์๊น๋๋ค. ๋ฐ๋ผ์ ํ๋ฐฐ ๊ธฐ์ฌ๋์ด ๋ฏธ๋ฆฌ ์๋ ค์ค ์์์ ๋ง๊ฒ ์์ฌ๊ฐ ํ๋ฐฐ์์๋ฅผ ์ค์ด์ผ ํฉ๋๋ค.
๋ง์ฝ ์ปจํ ์ด๋ ๋ฒจํธ์ ๋งจ ์์ ๋์ธ ์์๊ฐ ํ์ฌ ํธ๋ญ์ ์ค์ด์ผ ํ๋ ์์๊ฐ ์๋๋ผ๋ฉด ๊ทธ ์์๋ฅผ ํธ๋ญ์ ์ค์ ์์๊ฐ ๋ ๋๊น์ง ์ ์ ๋ค๋ฅธ ๊ณณ์ ๋ณด๊ดํด์ผ ํฉ๋๋ค. ํ์ง๋ง ๊ณ ๊ฐ์ ๋ฌผ๊ฑด์ ํจ๋ถ๋ก ๋ ์ ๋ ์ ์์ด ๋ณด์กฐ ์ปจํ ์ด๋ ๋ฒจํธ๋ฅผ ์ถ๊ฐ๋ก ์ค์นํ์์ต๋๋ค. ๋ณด์กฐ ์ปจํ ์ด๋ ๋ฒจํธ๋ ์ ๋ค๋ก ์ด๋์ด ๊ฐ๋ฅํ์ง๋ง ์ ๊ตฌ ์ธ์ ๋ค๋ฅธ ๋ฉด์ด ๋งํ ์์ด์ ๋งจ ์์ ์์๋ง ๋บ ์ ์์ต๋๋ค(์ฆ, ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ณด์กฐ ์ปจํ ์ด๋ ๋ฒจํธ์ ๋ณด๊ดํ ์์๋ถํฐ ๊บผ๋ด๊ฒ ๋ฉ๋๋ค). ๋ณด์กฐ ์ปจํ ์ด๋ ๋ฒจํธ๋ฅผ ์ด์ฉํด๋ ๊ธฐ์ฌ๋์ด ์ํ๋ ์์๋๋ก ์์๋ฅผ ์ฃ์ง ๋ชป ํ๋ค๋ฉด, ๋ ์ด์ ์์๋ฅผ ์ฃ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์์ฌ๊ฐ 5๊ฐ์ ์์๋ฅผ ์ค์ด์ผ ํ๋ฉฐ, ํ๋ฐฐ ๊ธฐ์ฌ๋์ด ์๋ ค์ค ์์๊ฐ ๊ธฐ์กด์ ์ปจํ ์ด๋ ๋ฒจํธ์ ๋ค ๋ฒ์งธ, ์ธ ๋ฒ์งธ, ์ฒซ ๋ฒ์งธ, ๋ ๋ฒ์งธ, ๋ค์ฏ ๋ฒ์งธ ๋์ธ ํ๋ฐฐ์์ ์์์ธ ๊ฒฝ์ฐ, ์์ฌ๋ ์ฐ์ ์ฒซ ๋ฒ์งธ, ๋ ๋ฒ์งธ, ์ธ ๋ฒ์งธ ์์๋ฅผ ๋ณด์กฐ ์ปจํ ์ด๋ ๋ฒจํธ์ ๋ณด๊ดํฉ๋๋ค. ๊ทธ ํ ๋ค ๋ฒ์งธ ์์๋ฅผ ํธ๋ญ์ ์ฃ๊ณ ๋ณด์กฐ ์ปจํ ์ด๋ ๋ฒจํธ์์ ์ธ ๋ฒ์งธ ์์ ๋นผ์ ํธ๋ญ์์ฃ์ต๋๋ค. ๋ค์์ผ๋ก ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ค์ด์ผ ํ์ง๋ง ๋ณด์กฐ ์ปจํ ์ด๋ ๋ฒจํธ์์๋ ๋ ๋ฒ์งธ ์์๋ฅผ, ๊ธฐ์กด์ ์ปจํ ์ด๋ ๋ฒจํธ์๋ ๋ค์ฏ ๋ฒ์งธ ์์๋ฅผ ๊บผ๋ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ด์์ ์์๋ ์ค์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํธ๋ญ์๋ 2๊ฐ์ ์์๋ง ์ค๋ฆฌ๊ฒ ๋ฉ๋๋ค.
ํ๋ฐฐ ๊ธฐ์ฌ๋์ด ์ํ๋ ์์ ์์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด order๊ฐ ์ฃผ์ด์ก์ ๋, ์์ฌ๊ฐ ๋ช ๊ฐ์ ์์๋ฅผ ์ค์ ์ ์๋์ง return ํ๋ solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ order์ ๊ธธ์ด ≤ 1,000,000
- order๋ 1์ด์ order์ ๊ธธ์ด ์ดํ์ ๋ชจ๋ ์ ์๊ฐ ํ๋ฒ์ฉ ๋ฑ์ฅํฉ๋๋ค.
- order[i]๋ ๊ธฐ์กด์ ์ปจํ ์ด๋ ๋ฒจํธ์ order[i]๋ฒ์งธ ์์๋ฅผ i+1๋ฒ์งธ๋ก ํธ๋ญ์ ์ค์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
์ ์ถ๋ ฅ ์
order | result |
[4, 3, 1, 2, 5] | 2 |
[5, 4, 3, 2, 1] | 5 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ๋ชจ๋ ์์๋ฅผ ๋ณด์กฐ ์ปจํ ์ด๋ ๋ฒจํธ์ ๋ชจ๋ ๋ฃ๊ณ , ์ญ์์ผ๋ก ํ๋์ฉ ๋นผ์ ํธ๋ญ์ ์ฃ์ต๋๋ค.
ํ์ด
- ์ด ๋ฌธ์ ๋ ๋ณด์๋ง์ ์คํ ๋ฌธ์ ๋ค?๋ผ๊ณ ์๊ฐํ๋ค.
- ๋ฉ์ธ ์ปจํ ์ด๋ ๋ฒจํธ๋ ํ(FIFO)
- ๋ณด์กฐ ์ปจํ ์ด๋ ๋ฒจํธ๋ ์คํ(LIFO)
- ๋
ธ๊ฐ๋ค๋ก ํด๋ณด๋ฉด
- ํ : 4,3,1,2,5 / ์คํ : null
- ํ : 3,1,2,5 / ์คํ : 4
- ํ : 1,2,5 / ์คํ : 4, 3
- ํ : 2,5 / ์คํ : 4, 3
- ํ : 5 / ์คํ : 4, 3
- ํ : 5 / ์คํ : 4
- ํ : 5 / ์คํ :
- ํ : / ์คํ :
- ...๊ฐ ์๋๋ค ใ
ก.ใ
ก ๋ฌด์ง์ฑ ์ฝ๋ฉํ๋ฉด ์ด๋ ๊ฒ ์๊ฐ์ ๋ญ๋นํ๋ค... ์ด๋ง์ด์ผ...
- ๋ฉ์ธ ์ปจํ ์ด๋ ๋ฐธํธ์์ : 1, 2, 3, 4, 5๊ฐ ์์๋๋ก ๋์ค๊ณ ...
- ํ๋ฐฐ ๊ธฐ์ฌ์ ์ค๋๊ฐ : 4, 3, 1, 2, 5๊ฐ ์๊ณ ,
- ๋ณด์กฐ ์ปจํ ์ด๋ ๋ฐธํธ๋ก ์คํ์ด ํ๋ ์๋ ๊ตฌ์กฐ.
- ๋ค์ ๋
ธ๊ฐ๋ค๋ก ํด๋ณด๋ฉด
- 1์ด ๋์ค๋๋ฐ ์ค๋(4,3,1,2,5)์ ์์ผ๋๊น ์คํ์ผ๋ก
- ๋ฉ์ธ์ปจํ ์ด๋๋ฐธํธ : 1,2,3,4,5 / ๋ณด์กฐ์ปจํ ์ด๋๋ฐธํธ
- ๋ฉ์ธ์ปจํ ์ด๋๋ฐธํธ : 2,3,4,5 / ๋ณด์กฐ์ปจํ ์ด๋๋ฐธํธ 1
- ๋ฉ์ธ์ปจํ ์ด๋๋ฐธํธ : 3,4,5 / ๋ณด์กฐ์ปจํ ์ด๋๋ฐธํธ 1,2
- ๋ฉ์ธ์ปจํ ์ด๋๋ฐธํธ : 4,5 / ๋ณด์กฐ์ปจํ ์ด๋๋ฐธํธ 1,2,3
- ๋ฉ์ธ์ปจํ ์ด๋๋ฐธํธ : 5 / ๋ณด์กฐ์ปจํ ์ด๋๋ฐธํธ 1,2,3
- ๋ฉ์ธ์ปจํ ์ด๋๋ฐธํธ : 5 / ๋ณด์กฐ์ปจํ ์ด๋๋ฐธํธ 1,2
- ๋ฉ์ธ, ๋ณด์กฐ ์ปจํ ์ด๋ ์์ชฝ ๋ชจ๋ ์ค๋์ ์๋ ์ซ์๊ฐ ์์ผ๋๊น 2๋ฅผ ๋ฆฌํด
- ๋ญ๊ฐ ์ด์ํ์ง? ๋ญ๊ฐ ์ด์ํ๋ค. ๊ทผ๋ฐ ๋ญ๊ฐ ์ด์ํ์ง ๋ชจ๋ฅด๊ฒ ๋ค.
- ๊ทธ๋ฅ ์ด๋๋ก ๊ตฌํํด์ ๋ง๋ค๋ฉด ๋๋?
- [4, 6, 8, 1...์ด ์๋ค๊ณ ์น์]
- 4๊ฐ ์์ผ๋ฉด, 1,2,3์ ์คํ์ ๋ฃ๊ณ ,
- 6์ด ์์ผ๋ฉด 5๋ฅผ ์คํ์ ๋ฃ๊ณ ,
- 8์ด ์์ผ๋ฉด 7์ ์คํ์ ๋ฃ๊ณ ,
- 1์ ๋บ๋ ค๋ฉด ์คํ์์ ๋นผ์ผ๋์ง๋ง, ์คํ์์ 7์ ๋บ ์ ์์ผ๋ ์คํจ
- [1, 3, 2 ]
- 1 ๋นผ๊ณ , 2์คํ์ ๋ฃ๊ณ , 3 ๋นผ๊ณ , 2 ์คํ์์ ๋นผ๊ณ
- [3,2,1]
- ์คํ์ 1, 2 ๋ฃ๊ณ
- 3๋นผ๊ณ , 2๋นผ๊ณ , 1๋บ๋ค.
- [3,2,1,4, 5]
- ์คํ์ 1, 2 ๋ฃ๊ณ
- 3๋นผ๊ณ , 2๋นผ๊ณ , 1๋บ๋ค.
- 4๋นผ๊ณ , 5๋บ๋ค.
- [4, 6, 8, 1...์ด ์๋ค๊ณ ์น์]
- ๋ญ๊ฐ ๋ฐฐ์ด ๊ฐ๋ง ์ฝ๊ณ ์ ์ ์์ ๊ฑฐ๋ผ ์๊ฐํ๋๋ฐ ๋ชจ๋ฅด๊ฒ ๋ค.
- 1์๊ฐ ๋๊ฒ ๊ณ ๋ฏผ
- 2์๊ฐ ๋๊ฒ ๊ณ ๋ฏผ ์ค
- ๊ทธ๋ฅ ์ง๋ณด์!
- ๋ฌด์ง์ฑ ์ฝ๋ฉ ๊ฐ์ฆ์!
- ๋ง์ ์ฌ์ ์ง๋ง ์๋ฌด๋ฆฌ ์ง๋ ์๋ฌ๊ฐ ใ ใ ใ
def solution(order):
main_Container_Belt = 1
order_index = 0
stack = []
while True:
print(order[order_index], main_Container_Belt, stack)
if order[order_index] == main_Container_Belt:
order_index += 1
pass
elif len(stack) > 0 and order[order_index] == stack[-1]:
order_index += 1
stack.pop()
else:
stack.append(main_Container_Belt)
main_Container_Belt += 1
if main_Container_Belt > len(order):
break
return order_index
ํ
์คํธ 1
์
๋ ฅ๊ฐ ใ [4, 3, 1, 2, 5]
๊ธฐ๋๊ฐ ใ 2
์คํ ๊ฒฐ๊ณผ ใ ํ
์คํธ๋ฅผ ํต๊ณผํ์์ต๋๋ค.
์ถ๋ ฅ ใ 4 1 []
4 2 [1]
4 3 [1, 2]
4 4 [1, 2, 3]
3 5 [1, 2, 3]
ํ
์คํธ 2
์
๋ ฅ๊ฐ ใ [5, 4, 3, 2, 1]
๊ธฐ๋๊ฐ ใ 5
์คํ ๊ฒฐ๊ณผ ใ ์คํํ ๊ฒฐ๊ด๊ฐ 1์ด ๊ธฐ๋๊ฐ 5๊ณผ ๋ค๋ฆ
๋๋ค.
์ถ๋ ฅ ใ 5 1 []
5 2 [1]
5 3 [1, 2]
5 4 [1, 2, 3]
5 5 [1, 2, 3, 4]
- ๊ฐ๋
์ ๋ค์ ์ก์์ผ๊ฒ ๋ค.
- ์๋ฃ๊ตฌ์กฐ๋ฅผ 2๊ฐ๋ฅผ ๋ง๋ค์ด์
- order๋ ๋น๊ตํด์ ๋ฒจํธ2์ ๋ฃ์๋ค๊ฐ ๋บ๋ค๊ฐ ํ๋๊ฑฐ ์ ๋งคํ๋ค.
- ๊ตฌ๋ฅ ๋ฐฐ์ด ํ๋๋ก ์๋๋?
์ค๋ 4,3,1,2,5
- ๋ฒจํธ 1 ๋ฐฐ์ด (N ๋งํผ ๋ง๋ค๊ธฐ) : 1,2,3,4,5
- order[0] = 4 ์ฐพ๊ธฐ
- ์ฐพ์ผ๋ฉด 4๋ฅผ 0์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๊ทธ ์์น๋ฅผ stack_pos์ ์ ์ฅ
- 1,2,3,s[0],5
- ๋ค์ ๊ฑฐ ์ฒดํฌํ๋๋ฐ 5๊ฐ ๋ ํฌ๋ฉด belt_pos ์ ์ฅํ๊ณ , stack_pos์์ ๋ค๋ก ํ์ง
- 1,2,3,s[0],b[5]
- 1,2,s[0],0,b[5] 3์ฐพ์์ผ๋ 0์ผ๋ก ๋ณ๊ฒฝํ๊ณ stack_pos์ ์ ์ฅ
- ๋ค์๊ฑฐ belt_pos์์ ์ฐพ์๋๋ฐ ์์ผ๋ฉด... belt_pos ์ ์ฅํ๊ณ , stack_pos์์ ๋ค๋ก ํ์ง
- 1,s[2],0,0,b[5]
- stack_pos๋ 1์ ๋ชพ ์ฐพ์์ผ๋ ์ข ๋ฃ.
- 1,s[2],0,0,b[5]
- ์นด์ดํฐ๋ก ๋ณํํ๊ณ , 0์ ๊ฐฏ์๋ฅผ ์นด์ดํธ. 0์ด ๋๊ฐ, 2๋ฅผ ๋ฆฌํด.
- order[0] = 4 ์ฐพ๊ธฐ
์ค๋ 5,4,3,2,1
- ๋ฒจํธ 1 ๋ฐฐ์ด (N ๋งํผ ๋ง๋ค๊ธฐ) : 1,2,3,4,5
- belt_pos=0. stack_pos = 0, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,2,3,4,5 (5 ๋ชป ์ฐพ์)
- belt_pos=1. stack_pos = 1, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,2,3,4,5 (5 ๋ชป ์ฐพ์)
- belt_pos=2. stack_pos = 2, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,2,3,4,5 (5 ๋ชป ์ฐพ์)
- belt_pos=3. stack_pos = 3, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,2,3,4,5 (5 ๋ชป ์ฐพ์)
- belt_pos=4. stack_pos = 4, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,2,3,4,5 (5 ์ฐพ์)
- belt_pos=4. stack_pos = 4, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,2,3,4,0 (4 ๋ชป ์ฐพ์)
- belt_pos=4. stack_pos = 3, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,2,3,4,0 (4 ์ฐพ์)
- belt_pos=4. stack_pos = 2, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,2,3,0,0 (3 ๋ชป ์ฐพ์)
- ..
- ...
๋ง์ฝ ์คํ์ ๋ฃ๊ณ , ๋ฒจํธ์์ ๋นผ๊ณ , ์คํ์ ๋ฃ๊ณ , ๋ฒจํธ์์ ๋นผ๊ณ ๋ฅผ ๋ฐ๋ณตํ๋ ๊ฒฝ์ฐ๋?
- ์ค๋ : 2,1,4,3,6,5
- belt_pos=0. stack_pos = 0, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,2,3,4,5,6 (2 ๋ชป ์ฐพ์)
- belt_pos=1. stack_pos = 1, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,2,3,4,5,6 (2 ์ฐพ์)
- belt_pos=1. stack_pos = 1, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,0,3,4,5,6 <- 0์ผ๋ก ๋ณ๊ฒฝ
- belt_pos=2. stack_pos = 2, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,0,3,4,5,6 (1 ๋ชป ์ฐพ์)
- belt_pos=2. stack_pos = 1, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,0,3,4,5,6 (1 ๋ชป ์ฐพ์)
- belt_pos=2. stack_pos = 0, ๋ฒจํธ 1 ๋ฐฐ์ด : 1,0,3,4,5,6 (1 ์ฐพ์)
- belt_pos=2. stack_pos = 0, ๋ฒจํธ 1 ๋ฐฐ์ด : 0,0,3,4,5,6 <- 0์ผ๋ก ๋ณ๊ฒฝ
- belt_pos=2. stack_pos = 2, ๋ฒจํธ 1 ๋ฐฐ์ด : 0,0,3,4,5,6 (4 ๋ชป ์ฐพ์)
- belt_pos=3. stack_pos = 2, ๋ฒจํธ 1 ๋ฐฐ์ด : 0,0,3,4,5,6 (4 ์ฐพ์)
- belt_pos=3. stack_pos = 2, ๋ฒจํธ 1 ๋ฐฐ์ด : 0,0,3,0,5,6 <- 0์ผ๋ก ๋ณ๊ฒฝ
์ด์ฐ... ์ด๊ฒ๋ ๋๋ฆด ๊ฒ ๊ฐ๋ค.
- ๋ฒจํธ 1์ ๊ทธ๋ฅ for๋ฌธ ๋๋ฆฌ๋ฉด ๋ ๊ฑฐ ๊ฐ์.
- ๋ฒจํธ 2 ์คํ์ ๋ฌด์กฐ๊ฑด ์์ด์ผ ํ ๋ฏ?
- ํ๋ฐฐ์ฐจ๋ ํ์์๊ณ ,
- ํ๋ฐฐ๊ธฐ์ฌ์ ์ค๋๋ ์์ด์ผ ํจ.
- ์์ค ๋จธ๋ฆฌ์ผ
- 4,3,1,2,5๋ 4,3๋ง ์ค์ ์ ์๊ณ ๋.
- 4,3,2,1,5๋ 5๊ฐ ๋ค ์ค์ ์ ์์.
- 2,1,4,3,5๋ ๋ค ์ค์ ์ ์๊ณ ,
- 3,2,1,5,4๋ ๋ค ์ค์ ์ ์์.
- 5,1,4,2,3์? 5๋ง ์ฃ๊ธฐ ๊ฐ๋ฅ.
- B1 5
- B2 4,3,2,1
- ๊ฐ๋ง ๋ณด๋ฉด ์๋ฌด๋ฆฌ ๋ณ์ ๊ฐ์ด ํด๋ ๋งจ ์ฒ์ 1๊ฐ๋ ๋ฌด์กฐ๊ฑด ์ค์ ์ ์๋ค.
- ๊ทธ ๋งจ ์ฒ์์ ์ซ์๊ฐ ์ค์ํ ๊ฒ ๊ฐ์๋?
์ค๋ | 4,3,1,2,5 | 4,3,2,1,5 | 2,1,4,3,5 | 3,2,1,5,4 | 5,1,4,2,3 |
๋ฒจํธ1 | 4,5 | 4,5 | 2,3,4,5 | 3,4,5 | 5 |
๋ฒจํธ2 | 3,2,1 | 3,2,1 | 1 | 2,1 | 4,3,2,1 |
์ค์ ์ ์๋ ์์ | 2 | 5 | 5 | 5 | 1 |
- ์๋ฌด๋ฆฌ ๋ด๋ ์๋๋ค. ๊ทธ๋ฅ ๋ค์ ๋ฌด์ง์ฑ์ผ๋ก ใ
ใ
ใ
- ์ ์๋ ๋ ๋ณ์๋ช ์ ํ๊ธ๋ก ์ ์ด๋ณด๋ฉด ์ ํ๋ฆฌ๋๋ผ...? (๋ฏธ์ )
- ์ผ... ์ด๊ฑฐ์ง๋ก ํ๋ค๋ณด๋๊น ์ด๊ฒ ๋๋ค? ์ผ๋จ ํ ์คํธ ์ผ์ด์ค๋ ํต๊ณผ. ์ข ๋ค๋ฌ์ด์ผ์ง...
- ์ผ์์ผ ํ๋ฃจ๋ฅผ ์ด๊ฑธ๋ก ๋ ๋ ธ๋ค? ใ ใ ใ
def solution(order):
ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋ = 0
๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ = 1
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK = []
while True:
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK.append(๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ)
print(๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ, ๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK)
while True:
if ๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK[-1] == order[ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋]:
print("๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์")
ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋ += 1
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK.pop()
print(๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ, ๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK)
else:
print("๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์")
break
if len(๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK) == 0:
print("๋ธ๋ ์ดํฌ")
break
๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ += 1
if ๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ == len(order)+1:
break
return len(order) - len(๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK)
ํ
์คํธ 1
์
๋ ฅ๊ฐ ใ [4, 3, 1, 2, 5]
๊ธฐ๋๊ฐ ใ 2
์คํ ๊ฒฐ๊ณผ ใ ํ
์คํธ๋ฅผ ํต๊ณผํ์์ต๋๋ค.
์ถ๋ ฅ ใ 1 [1]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
2 [1, 2]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
3 [1, 2, 3]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
4 [1, 2, 3, 4]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
4 [1, 2, 3]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
4 [1, 2]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
5 [1, 2, 5]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
ํ
์คํธ 2
์
๋ ฅ๊ฐ ใ [5, 4, 3, 2, 1]
๊ธฐ๋๊ฐ ใ 5
์คํ ๊ฒฐ๊ณผ ใ ํ
์คํธ๋ฅผ ํต๊ณผํ์์ต๋๋ค.
์ถ๋ ฅ ใ 1 [1]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
2 [1, 2]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
3 [1, 2, 3]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
4 [1, 2, 3, 4]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
5 [1, 2, 3, 4, 5]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
5 [1, 2, 3, 4]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
5 [1, 2, 3]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
5 [1, 2]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
5 [1]
๋ณด์กฐ์ปจํ
์ดํฐ๋ฒจํธ์ ์์
5 []
๋ธ๋ ์ดํฌ
- ๋ค๋ฌ์ด์ ์ ์ถ!
- ์๋๊ฐ ์์ฝ๊ตฐ์.
def solution(order):
N = len(order)
ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋ = 0
๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ = 1
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK = []
while ๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ != N+1:
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK.append(๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ)
while len(๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK) != 0:
if ๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK[-1] == order[ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋]:
ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋ += 1
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK.pop()
else:
break
๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ += 1
return N - len(๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK)
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (32.06ms, 19.2MB)
ํ
์คํธ 2 ใ ํต๊ณผ (114.48ms, 53.1MB)
ํ
์คํธ 3 ใ ํต๊ณผ (148.02ms, 66.6MB)
ํ
์คํธ 4 ใ ํต๊ณผ (102.68ms, 46.5MB)
ํ
์คํธ 5 ใ ํต๊ณผ (232.50ms, 94.6MB)
ํ
์คํธ 6 ใ ํต๊ณผ (98.65ms, 19.5MB)
ํ
์คํธ 7 ใ ํต๊ณผ (295.80ms, 46.9MB)
ํ
์คํธ 8 ใ ํต๊ณผ (28.14ms, 12.1MB)
ํ
์คํธ 9 ใ ํต๊ณผ (218.01ms, 35.3MB)
ํ
์คํธ 10 ใ ํต๊ณผ (360.32ms, 53.1MB)
- ๊ณ ์์ ํ์ด๋ฅผ ๋ณด๋
- while ๋ฌธ์ด ์๋๋ผ for๋ฌธ์ผ๋ก ์์ํด๋ ๋๋ค์.
- ๊ทธ๋ฆฌ๊ณ "N - len(๋ณด์กฐ์ปจํ ์ด๋๋ฒจํธSTACK)"์ ๋ฆฌํดํ ๊ฒ ์๋๋ผ "ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋"์ ๋ฆฌํดํด๋ ๋๋๊ตฐ์.
def solution(order):
List=[]
cnt=0
for i in range(1, len(order)+1):
List.append(i)
while order[cnt]==List[-1]:
List.pop()
cnt+=1
if len(List)==0:
break
return cnt
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (13.80ms, 19.1MB)
ํ
์คํธ 2 ใ ํต๊ณผ (61.73ms, 53MB)
ํ
์คํธ 3 ใ ํต๊ณผ (81.85ms, 66.4MB)
ํ
์คํธ 4 ใ ํต๊ณผ (54.79ms, 46.3MB)
ํ
์คํธ 5 ใ ํต๊ณผ (121.31ms, 94.5MB)
ํ
์คํธ 6 ใ ํต๊ณผ (54.43ms, 19.3MB)
ํ
์คํธ 7 ใ ํต๊ณผ (213.81ms, 46.4MB)
ํ
์คํธ 8 ใ ํต๊ณผ (11.66ms, 11.8MB)
ํ
์คํธ 9 ใ ํต๊ณผ (147.47ms, 35MB)
ํ
์คํธ 10 ใ ํต๊ณผ (255.71ms, 53.1MB)
- ์ฒจ๋ถํฐ ์ด๋ ๊ฒ ์งค ์ ์์์ผ๋ฉด ์ผ๋ง๋ ์ข์์๊น? ์ง์ง ๊น๋ํ๋ค...
- ๊ทผ๋ฐ while ๋ฌธ์ ์กฐ๊ฑด 2๊ฐ ๊ฑธ๋ฉด ๋๋ ค์ง๋๋ด...
def solution(order):
ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋ = 0
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK = []
for ๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ in range(1, len(order)+1):
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK.append(๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ)
while len(๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK) != 0 and ๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK[-1] == order[ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋]:
ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋ += 1
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK.pop()
return ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (20.91ms, 19.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (105.58ms, 53.3MB)
ํ
์คํธ 3 ใ ํต๊ณผ (129.87ms, 66.6MB)
ํ
์คํธ 4 ใ ํต๊ณผ (106.39ms, 46.4MB)
ํ
์คํธ 5 ใ ํต๊ณผ (182.48ms, 94.7MB)
ํ
์คํธ 6 ใ ํต๊ณผ (66.75ms, 19.5MB)
ํ
์คํธ 7 ใ ํต๊ณผ (264.94ms, 46.9MB)
ํ
์คํธ 8 ใ ํต๊ณผ (14.32ms, 12.1MB)
ํ
์คํธ 9 ใ ํต๊ณผ (189.78ms, 35.4MB)
ํ
์คํธ 10 ใ ํต๊ณผ (317.26ms, 53.2MB)
- ์ง์ง๋ค. while ๋ฌธ์ ์กฐ๊ฑด ์ฌ๋ฌ ๊ฐ ๋ฌ๋ฉด ๋๋ ค์ง๋ค...? ์ ๊ธฐํ๊ฑฐ ์์๋ค.
def solution(order):
ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋ = 0
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK = []
for ๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ in range(1, len(order)+1):
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK.append(๋ฉ์ธ์ปจํ
์ด๋๋ฒจํธ)
while ๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK[-1] == order[ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋]:
ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋ += 1
๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK.pop()
if len(๋ณด์กฐ์ปจํ
์ด๋๋ฒจํธSTACK) == 0:
break
return ํ๋ฐฐ๊ธฐ์ฌ๋์์ค๋
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (16.18ms, 19.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (61.84ms, 52.9MB)
ํ
์คํธ 3 ใ ํต๊ณผ (89.09ms, 66.6MB)
ํ
์คํธ 4 ใ ํต๊ณผ (54.29ms, 46.3MB)
ํ
์คํธ 5 ใ ํต๊ณผ (122.20ms, 94.7MB)
ํ
์คํธ 6 ใ ํต๊ณผ (55.00ms, 19.3MB)
ํ
์คํธ 7 ใ ํต๊ณผ (218.76ms, 46.8MB)
ํ
์คํธ 8 ใ ํต๊ณผ (11.55ms, 12MB)
ํ
์คํธ 9 ใ ํต๊ณผ (169.14ms, 35.3MB)
ํ
์คํธ 10 ใ ํต๊ณผ (252.35ms, 53.2MB)
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ํผ์ ๋๊ธฐ์ ๋ฌ์ธ (0) | 2023.02.20 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ (0) | 2023.02.20 |
ํ๋ก๊ทธ๋๋จธ์ค ๋กค์ผ์ดํฌ ์๋ฅด๊ธฐ (0) | 2023.02.18 |
ํ๋ก๊ทธ๋๋จธ์ค ๋ชจ์์ฌ์ (0) | 2023.02.18 |
ํ๋ก๊ทธ๋๋จธ์ค ๋ฐฐ๋ฌ (0) | 2023.02.18 |