[Lv1]크레인 인형뽑기
0.문제설명
NxN 배열에서 moves에 담긴 순서대로 가장 위에 담긴 인형을 basket에 옮긴 후 연속해서 같은 인형이 두개 담길때 사라지는 인형의 갯수를 출력하는 문제이다.
1.풀이
moves 에서 옮기려는 해당열의 가장 위에 있는 즉, [i][j]중 i가 가장 작은 인형을 뽑아서 basket 문자열에 넣어준다. 하나씩 빼서 쓰기 쉽게 가로 단위로 저장되어 있는 board문자열을 세로단위로 result에 object로 저장 해 준다. 그리고 순서에 맞게 basket에 인형을 push 로 저장 한 뒤 두개가 연속하면 지워주면서 count(n)을 2개 씩 증가한 뒤 n을 출력한다.
2.코드
function solution(board, moves) {
let result = {};
let basket = [];
for(let i=1; i<=board.length; i++){
eval("result.array"+i+"=[]");
}
for(let j=1;j<=board.length;j++){
for(let i=1;i<=board.length; i++){
if(board[i-1][j-1] !== 0){
eval("result.array"+j).push(board[i-1][j-1]);
}
}
}
for(let i=0; i<moves.length; i++){
let selectedRow = eval("moves["+i+"]");
let selectedArray = eval("result.array"+selectedRow);
if(selectedArray !== null){
basket.push(selectedArray[0]);
selectedArray.splice(0,1);
}
}
let filterdBasket = basket.filter(n=>n);
let n=0;
let i=0;
while(i<filterdBasket.length-1){
if(filterdBasket[i] === filterdBasket[i+1]){
filterdBasket.splice(i,2);
n+=2;
i=0;
}else{
i++;
}
}
return n;
}
3.후기
function solution(board, moves) {
let result = {};
let basket = [];
for(let i=1; i<=board.length; i++){
eval("result.array"+i+"=[]");
}
for(let j=1;j<=board.length;j++){
for(let i=1;i<=board.length; i++){
if(board[i-1][j-1] !== 0){
eval("result.array"+j).push(board[i-1][j-1]);
}
}
}
for(let i=0; i<moves.length; i++){
let selectedRow = eval("moves["+i+"]");
let selectedArray = eval("result.array"+selectedRow);
if(selectedArray !== null){
basket.push(selectedArray[0]);
selectedArray.splice(0,1);
}
}
let filterdBasket = basket.filter(n=>n);
let n=0;
let i=0;
while(i<filterdBasket.length-1){
if(filterdBasket[i] === filterdBasket[i+1]){
filterdBasket.splice(i,2);
n+=2;
i=0;
}else{
i++;
}
}
return n;
}
이 문제를 푼지 시간이 조금 지난 상황에서 정리를 하자니 이것 저것 고쳐보고 싶을 것이 있는데, 저 당시에는 arr.pop()을 사용할 줄 몰랐지만, 지금이면 pop을 써서 빠르게 줄여 갔을 듯 하다.
Author And Source
이 문제에 관하여([Lv1]크레인 인형뽑기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@chloe41297/1.Lv1크레인-인형뽑기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)