[알고리즘] 크레인 인형뽑기

Simple Key·2020년 7월 21일
0
post-thumbnail

🙂 알고리즘 연습 [프로그래머스 코딩테스트 연습 레벨 1]

크레인 인형뽑기

문제는 프로그래머스 사이트 참고!


📝 나의 풀이

const solution = (board, moves) => {
  let answer = 0;
  let container = []; // 뽑은 인형을 담는 바구니
  for(let i = 0; i < moves.length; i++){
    for(let j = 0; j < board.legnth; j++){ // moves가 이동한 격자에 인형이 있으면
      let toy = board[j][moves[i]-1]; // toy라는 변수로 지정한다.
	  container.push(toy); // container 배열에 toy를 넣어주고
      board[j][moves[i]-1] = 0; // container로 toy가 옮겨졌기 때문에 원래 자리는 0으로 변경
      break;
    }
  }
  // 장바구니에서 같은 인형이 만났을 때 삭제해주는 함수
  const removeOverlap = () => {
    for(let toy = 0; toy < container.length-1; toy++){
      if(container[toy] == container[toy+1]){
        answer++;
        container.splice(toy,2); // 똑같은 인형 2개 장바구니에서 삭제
        removeOverlap(); // 다시 자신을 재호출
      }
    }
  };
  removeOverlap();
  return answer * 2; // 제거된 인형의 갯수!
};

이미 이 문제를 푼지 쫌 지났지만 이제서야 블로깅을 하는 건 사이드 프로젝트와 이것저것 잡일 등을 하느라 시간을 보냈기 때문 .. (핑계)

오랜만에 풀어보는 알고리즘 문제라 꽤나 시간이 걸렸다. 솔직히 문제를 읽고 이해하는 것도 어려웠다. 개인적으로 문제의 설명이 조금 부족했다고 생각.. (특히 board에 대해) 😢

개떡같이 말해도 찰떡같이 알아들어야 하는 능력을 더 키워야겠지 ㅠ 아니면 찰떡같이 말한걸 개떡같이 알아 들은 거일지도 모르겠다😑

반복문 안에 반복문 + 조건문.
함수 안에 함수..

다음에는 좀 더 깔끔한 코드로 개선해보자 !

profile
프론트엔드 개발자 심기현 입니다.

0개의 댓글