[Programmers] 크레인 인형 뽑기 게임
크레인 인형 뽑기 게임 - JavaScript 풀이
문제풀이 로직
- moves 배열의 맨 앞에서부터 숫자를 1개씩 꺼낸다.
- 1에서 꺼낸 숫자를 2차원 배열 board의 두번째 인덱스로 지정하고, 첫번째 인덱스 값을 변화시키며 값을 확인한다.
2-1. 해당 열에 0이 아닌 요소가 있으면, 그 값을 리턴하고 해당 요소의 값은 0으로 변경
2-2. 해당 열에 0이 아닌 요소가 없으면, 0을 리턴 - 2에서 확인한 숫자를 별도의 컨테이너 행렬에 저장
3-1. 2에서 뽑은 숫자가 0이면 컨테이너에 저장하지 않는다.
3-2. 2에서 뽑은 숫자가 0이 아니고, 컨테이너가 비어있다면 숫자를 그냥 저장한다.
3-3. 2에서 뽑은 숫자가 0이 아니고, 컨테이너가 비어있지 않다면 컨테이너의 마지막 숫자와 2에서 뽑은 숫자를 비교한다.
3-3-1. 비교한 숫자가 다르면 숫자를 그냥 저장한다.
3-3-2. 비교한 숫자가 같으면 컨테이너의 마지막 수를 제거하고 count 변수의 값을 2 증가시킨다. - 1~3 과정을 moves 배열의 길이만큼 반복한다. 상기의 로직을 코드로 구현하면 다음과 같다.
function solution(board, moves) { let count = 0; const boardLength = board.length; // 반복문 시행 시 매번 length를 계산하지 않도록 미리 변수로 설정 const movesLength = moves.length; // 반복문 시행 시 매번 length를 계산하지 않도록 미리 변수로 설정 const container = []; // 뽑은 숫자(인형)을 저장할 별도의 배열 // 2차원 배열 board에서 숫자를 확인해서 뽑는 과정을 구현한 함수 const selectNumber = function(seletedColumn){ for(let i = 0; i < boardLength; i++){ // 선택 된 열의 모든 행의 값을 확인하며 0이 아닌 수를 찾는 과정 if(board[i][seletedColumn]){ const result = board[i][seletedColumn]; // 0이 아닌수를 result에 저장 board[i][seletedColumn] = 0; // 해당 요소의 값은 0으로 변경 (인형이 제거됨을 의미) return result; // result를 리턴 } } return 0; // 0이 아닌 값을 찾지 못했다면 0을 리턴 (해당 열에는 인형이 없음을 의미) } // 뽑은 숫자(인형)을 별도의 컨테이너에 저장하는 과정을 구현한 함수 const pushToContainer = function(selectedNumber){ // 1. 뽑은 숫자가 0이면 함수를 종료한다. if(!selectedNumber) return; // 2. 컨테이너가 비어있다면 숫자를 그냥 저장한다. if(container.length === 0){ container.push(selectedNumber); return; } // 3. 컨테이너가 비어있지 않다면 기존 저장된 숫자와 새로 뽑은 숫자를 비교한다. // 3-1. 비교한 숫자가 다르면 숫자를 그냥 저장한다. // 3-2. 비교한 숫자가 같으면 컨테이너의 마지막 숫자를 제거하고 count의 값을 2 증가시킨다. if(selectedNumber !== container[container.length-1]){ container.push(selectedNumber); return; } else if(selectedNumber === container[container.length-1]){ container.pop(); count+=2; return; } } // 실제 코드 동작부 - moves 배열의 원소를 순회하며 selectNumber 함수와 pushToContainer 함수를 호출 for(let i = 0; i < movesLength; i++){ const seletedColumn = moves[i]-1; pushToContainer(selectNumber(seletedColumn)); } return count; }
Author And Source
이 문제에 관하여([Programmers] 크레인 인형 뽑기 게임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@nomadhj/Programmers-크레인-인형-뽑기-게임저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)