728x90
반응형
풀이
function solution(board, moves) {
let pickedDolls = [];
let res=0
const checkDolls=(dolls)=>{
for (let i = 0; i < dolls.length; i++) {
if(dolls[i]===dolls[i+1]){
res+=2
pickedDolls.pop()
pickedDolls.pop()
}
}
}
const helper = (dollRow) => {
for (let i = 0; i < board.length; i++) {
if (board[i][dollRow - 1] !== 0) {
pickedDolls.push(board[i][dollRow - 1]);
checkDolls(pickedDolls)
board[i].splice(dollRow - 1, 1, 0);
break;
}
}
};
moves.forEach((i) => {
helper(i);
});
return res
}
checkDolls의 역할은 뽑은 인형들의 배열을 받아서 마지막 두개의 인형의 값이 일치하면 제거해 주는 역할
const checkDolls=(dolls)=>{
for (let i = 0; i < dolls.length; i++) {
if(dolls[i]===dolls[i+1]){
res+=2
pickedDolls.pop()
pickedDolls.pop()
}
}
}
moves.forEach를 통해 크레인이 내려가야할 열을 받아서 for문을 통해 0이 아닌 값을 찾을 때 까지 반복하고
0이 아닌 값을 찾으면 뽑은 인형 배열에 값을 저장한 뒤, checkDolls를 통해 인형의 중복을 확인하고
크레인 기계(board)에 있던 인형을 0으로 바꾸고 break를 통해 반복문을 끝낸다.
break가 있는 이유는 for문을 board.length만큼 반복시키도록 만들어뒀기에 값이 0이 아니라면
뽑은 인형 배열(pickedDolls)에 계속 값을 저장한다.
const helper = (dollRow) => {
for (let i = 0; i < board.length; i++) {
if (board[i][dollRow - 1] !== 0) {
pickedDolls.push(board[i][dollRow - 1]);
checkDolls(pickedDolls)
board[i].splice(dollRow - 1, 1, 0);
break;
}
}
};
728x90
반응형
'알고리즘(Algorithm)' 카테고리의 다른 글
프로그래머스 - 명예의 전당 (0) | 2023.01.24 |
---|---|
프로그래머스 - 키패드 누르기 [JS] (0) | 2023.01.16 |
프로그래머스 - 체육복(Greedy) [JS] (0) | 2023.01.13 |
프로그래머스 - 다트게임 [JS] (0) | 2023.01.11 |
프로그래머스 - 비밀지도 [JS] (0) | 2023.01.10 |