[프로그래머스] 크레인 인형뽑기게임 | Javascript
문제
1. 첫 번째 시도
최대한 가독성을 위해 함수를 분리하고 직관적인 변수명을 지으려고 노력했다.
- getDoll이라는 보조함수를 만들어서 보드와 컬럼을 지정해주면 해당 위치에 있는 인형을 반환하게 해 주었다.
- getDoll에서 받은 인형이 버켓의 마지막 인형과 같다면 버켓에서 pop, popCount는 +1씩,
- 같지 않다면 버켓에 해당 인형을 집어넣는다.
- pop된 인형의 개수는 popCount * 2으로 리턴한다.
function solution(board, moves) {
var popCount = 0;
let playBoard = board.slice();
let bucket = [];
for (let move of moves) {
let doll = getDoll(playBoard, move - 1);
let lastDoll = bucket[bucket.length - 1];
if (doll) {
if (doll === lastDoll) {
bucket.pop();
popCount++;
} else {
bucket.push(doll);
}
}
}
return popCount * 2;
}
function getDoll(board, col) {
let doll = 0;
for (let row of board) {
doll = row[col];
if (doll) {
row[col] = 0;
return doll;
}
}
return doll;
}
2. 두 번째 시도
첫 번째 시도를 하고 나서 다른 블로그 글을 보니 신기한 방식으로 하는 분이 계셔서 코드를 보지는 않았고 컨셉만 가지고 직접 구현해보기로 했다. 어떻게 이런 생각을 하셨지.
- 결국 column 기준으로 인형을 뽑으므로 row 기준의 배열을 column으로 재정의한다.
- moves의 각 move에 해당하는 row의 값을 shift한다.
- 버켓에 넣는 로직은 첫 번째 코드와 같다.
(to be continue..)
참고 블로그 : HongdaeDev.log님의 블로그
Author And Source
이 문제에 관하여([프로그래머스] 크레인 인형뽑기게임 | Javascript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dongoc21hj/프로그래머스-크레인-인형뽑기게임-Javascript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)