프로그래머스 Level 1 - 크레인 인형뽑기 게임

크롱·2023년 12월 12일
0

코딩테스트

목록 보기
56/61

내 풀이

map을 이용해서 풀었다.

 const map = new Map();
    for(let i=0;i<board.length;i++){
        for(let j=0;j<board.length;j++){
             if(board[i][j]!==0){
             map.set(j+1,[...(map.get(j+1)||''),board[i][j]])    
             }
        }   
    }
 for(let i=0;i<moves.length;i++){
        if(map.get(moves[i]).length>0){
               dolls.push(map.get(moves[i]).shift()) 
        }
   
    }

moves 배열로 map의 원소(인형)를 뽑아서 dolls라는 배열에저장함.

let count=0;
  for(let i=0;i<dolls.length;i++){
       
      if(dolls[i]==dolls[i+1]){
          count++
          dolls.splice(i,2)
        if(i==0){
            i=i-1
        }else{
          i=i-2  
        } 
      }
     
  }

dolls라는 배열을 순회하며 겹치는게 있는지 확인해주고 , count를 늘려주줌. 그리고 겹치는건 삭제함.
i의값을 -2로 해줘서 삭제한 후 새롭게 겹칠가능성있는걸 검사해줌

케이스 2 가 계속 실패로떴는데, 이는 i=0일때 i=i-1을 해줘야했기때문.

function solution(board, moves) {
  var answer = 0;
  let dolls=[]
  const map = new Map();
  for(let i=0;i<board.length;i++){
      for(let j=0;j<board.length;j++){
           if(board[i][j]!==0){
           map.set(j+1,[...(map.get(j+1)||''),board[i][j]])    
           }//board[i][j] 가 0이 아니면 
      }   
  }

  for(let i=0;i<moves.length;i++){
      if(map.get(moves[i]).length>0){
             dolls.push(map.get(moves[i]).shift()) 
      }
 
  }

let count=0;
  for(let i=0;i<dolls.length;i++){   
      if(dolls[i]==dolls[i+1]){
          count++
          dolls.splice(i,2)
        if(i==0){
            i=i-1
        }else{
          i=i-2  
        } 
      }
  }
 return count*2
}

다른 풀이

https://velog.io/@qmasem/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%81%AC%EB%A0%88%EC%9D%B8-%EC%9D%B8%ED%98%95%EB%BD%91%EA%B8%B0-%EA%B2%8C%EC%9E%84-JavaScript
출처

function solution(board, moves) {
    const basket = [];
    let result = 0;
    moves.forEach(order => {
        const doll = pickup(board, order-1);
        if(doll){
            if(basket[basket.length-1] === doll){
                basket.pop();
                result +=2;
            }else{
                basket.push(doll);
            }
        }
    });
    return result;
}

function pickup(board, order){
    for(let i = 0; i < board.length ; i++){
        if(board[i][order] !== 0){
            const doll = board[i][order];
            board[i][order]= 0;
            return doll;
        }
    }
}
profile
👩‍💻안녕하세요🌞

0개의 댓글