문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/64061
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
크레인을 작동하면 주어진 라인에서 가장 상위에 있는 인형이 무조건 뽑히고 인형은 바구니에 담깁니다.
이때 바구니에 같은 인형이 2개 연속으로 있으면 터져서 사라집니다.
뽑기 판(board)과 라인(moves)이 주어질 때 터져서 사라진 인형의 개수를 구하는 문제입니다.
문제 풀이
function solution(board, moves) {
let answer = 0
let stack = []
moves.forEach((pos) => {
for (let i = 0; i < board.length; i++) {
if (board[i][pos - 1] !== 0) {
let tmp = board[i][pos - 1]
board[i][pos - 1] = 0
if (tmp === stack[stack.length - 1]) {
stack.pop()
answer += 2
} else {
stack.push(tmp)
}
break
}
}
})
return answer
}
- 주어진 위치에 값이 0인지 확인 후 0이 아니면 해당 값을 tmp 변수에 할당 후 위치에는 0을 할당합니다.
- tmp 변수의 값이 스택에 마지막 값과 같은지 비교 후 같다면 스택에 있는 값을 지워줍니다.
- 이때 스택의 값과 뽑은 값을 지워주기 때문에 2를 더해줍니다.
- 다르다면 스택에 값을 넣어줍니다.
- 크레인은 주워진 위치에 맨 위 값만 끌어올리기 때문에 위 로직이 실행이 완료되면 break로 다음 위치로 이동합니다.
'Algorithm > Programmers' 카테고리의 다른 글
[Lv.2] 귤 고르기 (0) | 2023.05.16 |
---|---|
[Lv.2] 다음 큰 숫자 (0) | 2023.05.10 |
[Lv.2] 짝지어 제거하기 (0) | 2023.05.04 |
[Lv.2] 올바른 괄호 (0) | 2023.05.03 |
[Lv.2] 숫자의 표현 (0) | 2023.04.30 |