1. ๋ฌธ์ ์ค๋ช
๋ฌธ์ ๋งํฌ
- ์
๋ ฅ: boards [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] ๋ณด๋์ ์๋ ์ธํ ์ ๋ณด
- ์ถ๋ ฅ: moves [1,5,3,5,1,2,1,4] ์ธํ์ ์ด๋ ์์น์์ ๋ฝ์์ง
2. ์ฝ๋
def solution(boards, moves):
moves = list(map(lambda x : x-1, moves)) #1์ฉ ๋นผ์ฃผ๊ธฐ
stack = [0] #index out of range ๋ฐฉ์งํ์ฌ 0 ๋ฃ์ด์ฃผ๊ธฐ(๋งจ ์ฒ์์๋ stack[-2]๋ฅผ ๊ฒ์ฌํ ๊ฒฝ์ฐ์ ๋ฐ์)
cnt = 0
for i in moves:
for board in boards:
if board[i] !=0:
stack.append(board[i])
board[i] = 0
if stack[-1] == stack[-2]: #์คํ์ ๊ฐ์ฅ์, ๊ทธ ์๋ ์๋ฅผ ๋น๊ต
stack.pop()
stack.pop()
cnt+=2
break
return cnt
3. ํ๊ณ
- ์ฒ์์ ์ธ๋ฑ์ค๋ฅผ ๋ง์ถฐ์ฃผ๊ธฐ ์ํด์ moves ๊ฐ์ ๋ชจ๋ -1 ์ฉ ํด์ฃผ์๋ค. map, lambda๋ฅผ ๊ฒ์ํ์ง ์๊ณ ๋ ์ธ์์๋๋ก ์ฐ์ตํด์ผ๊ฒ ๋ค.
- break ๋ฌธ์ ์์ฃผ ์ฌ์ฉํด๋ณด์ง์์๋๋ฐ, ์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ ๊ผญ ํ์ํ๋ค.
- ํ ๋ฒ ๋ฐ๊ฒฌํ๊ณ board์์ ๊ฐ์ ๋นผ๊ณ stack์ ๋ฃ์๋ค๋ฉด, break๋ก for๋ฌธ์ ๋น ์ ธ๋์ ๋ค์ move๋ฅผ ํ์ธํด์ผํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ฌ move ์ ํด๋นํ๋ board๋ฅผ ๋ ํ์ํด์ ์ง์ธ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ break๋ฅผ ๊ผญ ํด์ฃผ์ด์ผํ๋ค.