728x90
📌 풀이
스택을 이용해서 풀었다. 스택이란 책 쌓기를 생각하면 된다. 가장 먼저 들어온 것이 가장 아래 쌓이고 가장 늦게 들어온 것이 가장 위에 쌓여 pop 즉 빼낼 때 가장 먼저 나가게 되는 Last In First Out(LIFO) 형태이다.
2차원 배열에서 하나씩 내려가면서 나오는 인형과 stack에 있는 인형을 비교해 만약 같다면 즉 (stack.peek() == board[i][it - 1])이라면 answer를 2개 늘려주고 stack의 인형을 pop 시켜주고 배열에서의 인형도 0 즉 인형을 없애준다.
풀이 코드
import java.util.*
class Solution {
fun solution(board: Array<IntArray>, moves: IntArray): Int {
var answer = 0
var stack = Stack<Int>()
moves.forEach {
for (i in board.indices){
if (board[i][it - 1] != 0){
if (stack.isNotEmpty() && (stack.peek() == board[i][it - 1])){
answer += 2
stack.pop()
} else {
stack.push(board[i][it - 1])
}
board[i][it - 1] = 0
break
}
}
}
return answer
}
}
'Algorithm' 카테고리의 다른 글
리트코드(LeetCode) 344번 문자열 뒤집기 (0) | 2022.03.28 |
---|---|
[파이썬] 프로그래머스 - 완주하지 못한 선수 (0) | 2022.03.27 |
[파이썬] 프로그래머스 64061(크레인 인형뽑기 게임) (0) | 2022.01.19 |
[코틀린] 프로그래머스 42840(모의고사) (0) | 2022.01.19 |
[파이썬] 프로그래머스 42840(모의고사) (0) | 2022.01.19 |