https://school.programmers.co.kr/learn/courses/30/lessons/64061
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
function solution(board, moves) {
let answer = 0;
const stack = [];
// 계속 다섯번을 돌며 가장 먼저 나오는 수를 뽑아 스택에 넣고 그 자리를 0으로 바꿈
for (const move of moves) {
const moveIdx = move-1; // board에 인덱스로 접근하기 위해 1로 빼줌
for (let i=0; i<board.length; i++) {
if (board[i][moveIdx] !== 0) {
const currentNum = board[i][moveIdx];
// 스택에 값 있으면
if (stack.length > 0) {
// 값이 같아서 터뜨릴 수 있는 조건에 만족하면 2개 카운트
if (stack[stack.length-1] === currentNum) {
stack.pop();
answer += 2
} else {
stack.push(currentNum); // 스택에 넣음
}
} else {
// 비교할 거 없으면 그냥 스택에 넣음
stack.push(currentNum);
}
// 해당 인덱스 값 0으로 바꾸고 다음 단계로 이동
board[i][moveIdx] = 0;
break;
}
}
}
return answer;
}
'코딩테스트 > Programmers' 카테고리의 다른 글
오픈 채팅방 (JS) (1) | 2025.01.06 |
---|---|
표 편집 (JS) (1) | 2025.01.05 |
방문 길이 (JS) (0) | 2025.01.05 |
실패율 (JS) (0) | 2025.01.05 |
최소직사각형 (JS) (0) | 2024.06.02 |