-
programmers: 크레인 인형뽑기 게임STUDY/Algorithm 2022. 2. 23. 21:03
https://programmers.co.kr/learn/courses/30/lessons/64061
코딩테스트 연습 - 크레인 인형뽑기 게임
[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4
programmers.co.kr
[ 첫번째 풀이 ]
function solution(board, moves) { let answer = 0; let boardArr = board; let stack = []; for(let i=0; i<moves.length; i++){ for(let j=0; j<boardArr.length; j++){ if(boardArr[j][moves[i]-1] !== 0) { stack.push(boardArr[j][moves[i]-1]); boardArr[j][moves[i]-1] = 0; if(stack.length > 1){ for(let k=0; k<stack.length; k++){ if(stack[k] === stack[k+1]){ answer += 2; stack.pop(); stack.pop(); } } } break; } } } return answer; }다시 살펴보니, 쓸데없는 for문을 한 번 더 사용하고 있었기에 이를 수정해줬다.
push를 실행하고 pop를 2번 해주는 과정을 생략해야 했다.
[ 두번째 풀이 ]
function solution(board, moves) { let answer = 0; let boardArr = board; let stack = []; for(let i=0; i<moves.length; i++){ for(let j=0; j<boardArr.length; j++){ if(boardArr[j][moves[i]-1] !== 0) { if(stack[stack.length-1] === boardArr[j][moves[i]-1]){ //push해줄 필요없이 pop을 해준다! stack.pop(); answer += 2; } else{ stack.push(boardArr[j][moves[i]-1]); } boardArr[j][moves[i]-1] = 0; break; } } } return answer; }'STUDY > Algorithm' 카테고리의 다른 글
programmers: 직사각형 별찍기 (0) 2022.02.23 programmers: 핸드폰 번호 가리기 (0) 2022.02.23 programmers: 행렬의 덧셈 (0) 2022.02.23