-
[프로그래머스] JS 크레인 인형뽑기 게임알고리즘/프로그래머스 2022. 4. 13. 09:10728x90
문제 이해하기
크레인을 모두 작동시켜 사라진 인형의 개수를 return 해야한다.
(필자는 몇번 사라졌는지로 잘못이해하여 뻘짓했다.)데이터 추상화
- 크레인을 작동시키는 함수로 먼저 추상화하자.
매개 변수인 moves를 활용하자. - 자료구조 stack에 크레인으로 잡은 값을 넣자.
- stack의 pop을 이용하여 쉽게 구현을 할수 있기에..
알고리즘
- moves.forEach()를 사용하여 크레인을 작동시킨다.
- 크레인은 board를 가로가 아닌 세로로 동작하기 하기 때문에 세로로 반복문을 돌려준다.
- 크레인으로 뽑힌 값, stack에서 pop() 한 값을 비교한다. 같지 않으면 push 하고, 같다면 리턴하여 무시하자.
function solution(board, moves) { var answer = 0; const stack = []; moves.forEach( (pos) => { for(let i = 0 ; i < board.length; i++){ if( board[i][pos-1] !== 0 ){ let data = stack.pop(); if( data !== board[i][pos-1]) { if( data ) { stack.push(data); } stack.push(board[i][pos-1]); }else{ answer++; } board[i][pos-1] = 0; return; } } }) return answer * 2; }
정리
- 구현 문제
- stack의 활용
느낀점
- 3년전에 카카오 지원해서 풀었던 문제였었던 거로 기억한다. 그때는 못풀었는데. 지금은 생각보다 쉽게 풀수 있어 감사했다.
728x90'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] JS 없는 숫자 더하기 (0) 2022.04.13 [프로그래머스] JS 키패드 누르기 (0) 2022.04.12 [프로그래머스] 위클리 10주차 - 교점에 별 만들기(JS) (0) 2021.10.14 [프로그래머스] 타겟 넘버 (JS) (0) 2021.10.10 [프로그래머스] 위클리 9주차 - 전력망을 둘로 나누기(JS) (0) 2021.10.09 - 크레인을 작동시키는 함수로 먼저 추상화하자.