개요
- 앞선 문제들 중에 주어진 자료형을 보기 좋은 객체로 바꿔주면 문제가 수월히 풀리는 것들이 있어, 우선 이중배열을 보기 쉬운 객체의 형태로 치환함
- 그 외에는 스택의 기본 구조만 활용하면 되는 것 같아 크게 어려움 없을 듯 (조건에 맞춰 분기만 잘하면..)
JS CODE - 내 풀이
function solution(board, moves) {
const board_obj = {};
for (let i = 1; i <= board.length; i++) {
board_obj[i] = [];
}
for (let i = 0; i < board.length; i++) {
for (let j = 0; j < board.length; j++) {
let board_one = board[i][j];
if (board_one) {
board_obj[j + 1].unshift(board_one);
}
}
}
let result = 0;
const basket = [];
moves.forEach((value) => {
let board_pop = board_obj[value].pop();
if (board_pop) {
if (basket.legnth == 0) {
basket.push(board_pop);
} else {
let last_one = basket[basket.length - 1];
if (last_one == board_pop) {
result += 2;
basket.pop();
} else {
basket.push(board_pop);
}
}
}
});
return result
}
- board_obj 객체는 첫번째 라인부터 n번째 라인까지 쌓여있는 인형들을 key-value(배열)로 설정한 객체
- 파이썬에서는 배열의 마지막 원소를 구하는 게 array[-1]로 간편했는데, js에서는 이를 지원하지 않는다.
- 따라서 arr[arr.length - 1]을 보편적으로 사용한다. 조금 획기적인 방법으로는, prototype에 메서드를 저장해 놓으면 파이썬에서 처럼 사용가능하다 정도가 있겠다.
'알고리즘 > 구현' 카테고리의 다른 글
[JavaScript] 2021 KAKAO 숫자 문자열과 영단어 (0) | 2022.05.02 |
---|---|
[JavaScript] 2022 KAKAO 신고 결과 받기 (0) | 2022.04.29 |
[Python] 백준, 1946 (0) | 2021.11.23 |
[Python] union-find (0) | 2021.10.09 |